CTime类format的使用

本文详细介绍了strftime函数的使用方法,包括各种格式化代码的意义及其在不同情况下的应用。通过实例展示了如何利用这些格式化代码来定制日期和时间字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Theformatargument consists of one or more codes; as inprintf, the formatting codes are preceded by a percent sign (%). Characters that do not begin with%are copied unchanged tostrDest.TheLC_TIMEcategory of the current locale affects the output formatting ofstrftime.(For more information onLC_TIME, seesetlocale.) The formatting codes forstrftimeare 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 theprintffunction, 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( &ltime );
printf( "Time in seconds since UTC 1/1/70:/t%ld/n", ltime );
printf( "UNIX time and date:/t/t/t%s", _ctime64( &ltime ) );

/* Display UTC. */
gmt = _gmtime64( &ltime );
printf( "Coordinated universal time:/t/t%s", asctime( gmt ) );

/* Convert to time structure and adjust for PM if necessary. */
today = _localtime64( &ltime );
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( &ltime );

/* 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:49
OS date: 02/07/02
Time in seconds since UTC 1/1/70: 1013120149
UNIX time and date: Thu Feb 07 14:15:49 2002
Coordinated universal time: Thu Feb 07 22:15:49 2002
12-hour time: 02:15:49 PM
Plus milliseconds: 455
Zone difference in hours from UTC: 8
Time zone name: Pacific Standard Time
Daylight savings: NO
Christmas 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中参数的含义见上面的说明

源文档 <http://www.cnblogs.com/Richinger/archive/2005/04/07/133162.html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值