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-1335 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