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
38void 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