Merge remote-tracking branch 'origin/master' into windows
[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  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15 /*--------------------------------------------------------------------------*/
16 #ifdef _MSC_VER
17 #ifndef _WIN64
18 #define _USE_32BIT_TIME_T 1
19 #endif
20 #endif
21 /*--------------------------------------------------------------------------*/
22 #include <sstream>
23 #include "getDiaryDate.hxx"
24 /*--------------------------------------------------------------------------*/
25 extern "C"
26 {
27 #include <time.h>
28 #ifndef _MSC_VER
29 #include <sys/time.h>
30 #endif
31 #include <locale.h>
32 }
33 /*--------------------------------------------------------------------------*/
34 std::string getDiaryDate(int format_mode)
35 {
36     std::string strdate("");
37     std::stringstream StrStream;
38     time_t tDate;
39     time(&tDate);
40
41     switch (format_mode)
42     {
43         case 0:
44         default: // UNIX TIMESTAMP
45         {
46             StrStream << (unsigned int)tDate;
47             strdate = StrStream.str();
48         }
49         break;
50         case 1: // http://en.wikipedia.org/wiki/ISO_8601 YYYY-MM-DD hh:mm:ss
51         {
52             struct tm *nowstruct = localtime(&tDate);
53
54             unsigned int YEAR = 1900 + nowstruct->tm_year;
55             unsigned int MONTH = 1 + nowstruct->tm_mon;
56             unsigned int DAY_OF_MONTH = nowstruct->tm_mday;
57             unsigned int HOUR_OF_DAY = nowstruct->tm_hour;
58             unsigned int MINUTES = nowstruct->tm_min;
59             unsigned int SECONDS = nowstruct->tm_sec;
60
61             StrStream << YEAR << "-" << MONTH << "-" << DAY_OF_MONTH;
62             StrStream << " ";
63             StrStream << HOUR_OF_DAY << ":" << MINUTES << ":" << SECONDS;
64             strdate = StrStream.str();
65         }
66         break;
67     }
68     return strdate;
69 }
70 /*--------------------------------------------------------------------------*/