1 | /* Copyright (c) 2000, 2004-2007 MySQL AB, 2009 Sun Microsystems, Inc. |
2 | Use is subject to license terms. |
3 | |
4 | This program is free software; you can redistribute it and/or modify |
5 | it under the terms of the GNU General Public License as published by |
6 | the Free Software Foundation; version 2 of the License. |
7 | |
8 | This program is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 | GNU General Public License for more details. |
12 | |
13 | You should have received a copy of the GNU General Public License |
14 | along with this program; if not, write to the Free Software |
15 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ |
16 | |
17 | /* Get date in a printable form: yyyy-mm-dd hh:mm:ss */ |
18 | |
19 | #include "mysys_priv.h" |
20 | #include <m_string.h> |
21 | |
22 | /* |
23 | get date as string |
24 | |
25 | SYNOPSIS |
26 | get_date() |
27 | to - string where date will be written |
28 | flag - format of date: |
29 | If flag & GETDATE_TIME Return date and time |
30 | If flag & GETDATE_SHORT_DATE Return short date format YYMMDD |
31 | If flag & GETDATE_HHMMSSTIME Return time in HHMMDD format. |
32 | If flag & GETDATE_GMT Date/time in GMT |
33 | If flag & GETDATE_FIXEDLENGTH Return fixed length date/time |
34 | date - for conversion |
35 | */ |
36 | |
37 | |
38 | void get_date(register char * to, int flag, time_t date) |
39 | { |
40 | reg2 struct tm *start_time; |
41 | time_t skr; |
42 | #if defined(HAVE_LOCALTIME_R) && defined(_REENTRANT) |
43 | struct tm tm_tmp; |
44 | #endif |
45 | |
46 | skr=date ? date : (time_t) my_time(0); |
47 | #if defined(HAVE_LOCALTIME_R) && defined(_REENTRANT) |
48 | if (flag & GETDATE_GMT) |
49 | gmtime_r(&skr,&tm_tmp); |
50 | else |
51 | localtime_r(&skr,&tm_tmp); |
52 | start_time= &tm_tmp; |
53 | #else |
54 | if (flag & GETDATE_GMT) |
55 | start_time= gmtime(&skr); |
56 | else |
57 | start_time= localtime(&skr); |
58 | #endif |
59 | if (flag & GETDATE_SHORT_DATE) |
60 | sprintf(to,"%02d%02d%02d" , |
61 | start_time->tm_year % 100, |
62 | start_time->tm_mon+1, |
63 | start_time->tm_mday); |
64 | else |
65 | sprintf(to, ((flag & GETDATE_FIXEDLENGTH) ? |
66 | "%4d-%02d-%02d" : "%d-%02d-%02d" ), |
67 | start_time->tm_year+1900, |
68 | start_time->tm_mon+1, |
69 | start_time->tm_mday); |
70 | if (flag & GETDATE_DATE_TIME) |
71 | sprintf(strend(to), |
72 | ((flag & GETDATE_FIXEDLENGTH) ? |
73 | " %02d:%02d:%02d" : " %2d:%02d:%02d" ), |
74 | start_time->tm_hour, |
75 | start_time->tm_min, |
76 | start_time->tm_sec); |
77 | else if (flag & GETDATE_HHMMSSTIME) |
78 | sprintf(strend(to),"%02d%02d%02d" , |
79 | start_time->tm_hour, |
80 | start_time->tm_min, |
81 | start_time->tm_sec); |
82 | } /* get_date */ |
83 | |