utf: output_stream 3
[scilab.git] / scilab / modules / output_stream / src / cpp / getDiaryDate.cpp
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2009 - DIGITEO - Allan CORNET
4 *
5 * This file must be used under the terms of the CeCILL.
6 * This source file is licensed as described in the file COPYING, which
7 * you should have received as part of this distribution.  The terms
8 * are also available at
9 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 *
11 */
12 /*--------------------------------------------------------------------------*/
13 #ifdef _MSC_VER
14 #ifndef _WIN64
15 #define _USE_32BIT_TIME_T 1
16 #endif
17 #endif
18 /*--------------------------------------------------------------------------*/
19 #include <sstream>
20 #include "getDiaryDate.hxx"
21 /*--------------------------------------------------------------------------*/
22 extern "C"
23 {
24 #include <time.h>
25 #ifndef _MSC_VER
26 #include <sys/time.h>
27 #endif
28 #include <locale.h>
29 }
30 /*--------------------------------------------------------------------------*/
31 std::string getDiaryDate(int format_mode)
32 {
33     std::string strdate("");
34     std::stringstream StrStream;
35     time_t tDate;
36     time(&tDate);
37
38     switch (format_mode)
39     {
40         case 0:
41         default: // UNIX TIMESTAMP
42         {
43             StrStream << (unsigned int)tDate;
44             strdate = StrStream.str();
45         }
46         break;
47         case 1: // http://en.wikipedia.org/wiki/ISO_8601 YYYY-MM-DD hh:mm:ss
48         {
49             struct tm *nowstruct = localtime(&tDate);
50
51             unsigned int YEAR = 1900 + nowstruct->tm_year;
52             unsigned int MONTH = 1 + nowstruct->tm_mon;
53             unsigned int DAY_OF_MONTH = nowstruct->tm_mday;
54             unsigned int HOUR_OF_DAY = nowstruct->tm_hour;
55             unsigned int MINUTES = nowstruct->tm_min;
56             unsigned int SECONDS = nowstruct->tm_sec;
57
58             StrStream << YEAR << "-" << MONTH << "-" << DAY_OF_MONTH;
59             StrStream << " ";
60             StrStream << HOUR_OF_DAY << ":" << MINUTES << ":" << SECONDS;
61             strdate = StrStream.str();
62         }
63         break;
64     }
65     return strdate;
66 }
67 /*--------------------------------------------------------------------------*/