使用CTime類可以很方便地取得當前系統時間並轉換為各種格式
The format argument consists of one or more codes; as in printf, the formatting codes are preceded by a percent sign (%). Characters that do not begin with % are copied unchanged to strDest. The LC_TIME category of the current locale affects the output formatting of strftime.(For more information on LC_TIME, see setlocale.) The formatting codes for strftime are listed below:
-
%a
-
Abbreviated weekday name
-
%A
-
Full weekday name
-
%b
-
Abbreviated month name
-
%B
-
Full month name
-
%c
-
Date and time representation appropriate for locale
-
%d
-
Day of month as decimal number (01 – 31)
-
%H
-
Hour in 24-hour format (00 – 23)
-
%I
-
Hour in 12-hour format (01 – 12)
-
%j
-
Day of year as decimal number (001 – 366)
-
%m
-
Month as decimal number (01 – 12)
-
%M
-
Minute as decimal number (00 – 59)
-
%p
-
Current locale's A.M./P.M. indicator for 12-hour clock
-
%S
-
Second as decimal number (00 – 59)
-
%U
-
Week of year as decimal number, with Sunday as first day of week (00 – 53)
-
%w
-
Weekday as decimal number (0 – 6; Sunday is 0)
-
%W
-
Week of year as decimal number, with Monday as first day of week (00 – 53)
-
%x
-
Date representation for current locale
-
%X
-
Time representation for current locale
-
%y
-
Year without century, as decimal number (00 – 99)
-
%Y
-
Year with century, as decimal number
-
%z,
%Z
-
Either the time-zone name or time zone abbreviation, depending on registry settings; no characters if time zone is unknown
-
%%
-
Percent sign
As in the printf function, the # flag may prefix any formatting code. In that case, the meaning of the format code is changed as follows.
| Format code |
Meaning |
| %#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% |
# flag is ignored. |
| %#c |
Long date and time representation, appropriate for current locale. For example: "Tuesday, March 14, 1995, 12:41:29". |
| %#x |
Long date representation, appropriate to current locale. For example: "Tuesday, March 14, 1995". |
| %#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y |
Remove leading zeros (if any). |
Requirements
| Routine |
Required header |
Compatibility |
| strftime |
<time.h> |
ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
| wcsftime |
<time.h> or <wchar.h> |
ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
Example
// crt_times.c/* This program demonstrates these time and date functions: * _time64 _ftime64 _ctime64 asctime * _localtime64 _gmtime64 _mktime64 _tzset * _strtime _strdate strftime * * Also the global variable: * _tzname */#include <time.h>#include <stdio.h>#include <sys/types.h>#include <sys/timeb.h>#include <string.h>int main(){ char tmpbuf[128], ampm[] = "AM"; __time64_t ltime; struct __timeb64 tstruct; struct tm *today, *gmt, xmas = { 0, 0, 12, 25, 11, 93 }; /* Set time zone from TZ environment variable. If TZ is not set, * the operating system is queried to obtain the default value * for the variable. */ _tzset(); /* Display operating system-style date and time. */ _strtime( tmpbuf ); printf( "OS time:\t\t\t\t%s\n", tmpbuf ); _strdate( tmpbuf ); printf( "OS date:\t\t\t\t%s\n", tmpbuf ); /* Get UNIX-style time and display as number and string. */ _time64( <ime ); printf( "Time in seconds since UTC 1/1/70:\t%ld\n", ltime ); printf( "UNIX time and date:\t\t\t%s", _ctime64( <ime ) ); /* Display UTC. */ gmt = _gmtime64( <ime ); printf( "Coordinated universal time:\t\t%s", asctime( gmt ) ); /* Convert to time structure and adjust for PM if necessary. */ today = _localtime64( <ime ); if( today->tm_hour >= 12 ) { strcpy( ampm, "PM" ); today->tm_hour -= 12; } if( today->tm_hour == 0 ) /* Adjust if midnight hour. */ today->tm_hour = 12; /* Note how pointer addition is used to skip the first 11 * characters and printf is used to trim off terminating * characters. */ printf( "12-hour time:\t\t\t\t%.8s %s\n", asctime( today ) + 11, ampm ); /* Print additional time information. */ _ftime64( &tstruct ); printf( "Plus milliseconds:\t\t\t%u\n", tstruct.millitm ); printf( "Zone difference in hours from UTC:\t%u\n", tstruct.timezone/60 ); printf( "Time zone name:\t\t\t\t%s\n", _tzname[0] ); printf( "Daylight savings:\t\t\t%s\n", tstruct.dstflag ? "YES" : "NO" ); /* Make time for noon on Christmas, 1993. */ if( _mktime64( &xmas ) != (__time64_t)-1 ) printf( "Christmas\t\t\t\t%s\n", asctime( &xmas ) ); /* Use time structure to build a customized time string. */ today = _localtime64( <ime ); /* Use strftime to build a customized time string. */ strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\n", today ); printf( tmpbuf );}Sample Output
OS time: 14:15:49OS date: 02/07/02Time in seconds since UTC 1/1/70: 1013120149UNIX time and date: Thu Feb 07 14:15:49 2002Coordinated universal time: Thu Feb 07 22:15:49 200212-hour time: 02:15:49 PMPlus milliseconds: 455Zone difference in hours from UTC: 8Time zone name: Pacific Standard TimeDaylight savings: NOChristmas Sat Dec 25 12:00:00 1993
簡單點的如下:
CString msg1="aaaaaaaaaaa";
KillTimer(1);
CTime t = CTime::GetCurrentTime();
char szTime[8];
int nHour = t.GetHour();
int nMinute = t.GetMinute();
int nSecond = t.GetSecond();
wsprintf(szTime, "%02i:%02i:%02i", nHour, nMinute,nSecond);//分秒一般習慣用兩位表
m_edit1=szTime;
UpdateData (FALSE);
SetTimer(1, 1000,NULL);
msg1=t.Format("%d-%m-%y"); //可以看到format的功能
MessageBox(msg1);
format中參數的含義見上面的說明