当前位置:C++技术网 > 资讯 > CTime格式化时间格式化符号详细说明

CTime格式化时间格式化符号详细说明

更新时间:2016-05-26 18:46:04浏览次数:1+次

    在做开发中,经常会碰到格式化时间的应用。开始就是这样格式化的:
CTime Time = CTime::GetCurrentTime();
CString strTime;
strTime.Format(_T("断网时间:%d年%02d月%02d日 %02d:%02d:%02d"),Time.GetYear(),Time.GetMonth(),Time.GetDay(),Time.GetHour(),Time.GetMinute(),Time.GetSecond());
    一次还好,写多了,感觉太TM长了。既然CTime类有格式化时间,那就熟悉一下格式化符号的说明,就可以少写很多代码了。那么使用CTime格式化符号格式化的代码如下:
CTime Time = CTime::GetCurrentTime();
CString strTime = Time.Format("断网时间:%Y年%m月%d日 %H:%M:%S");
    这样是不是看起来舒服多了。但是问题来了,好多格式化符号,好难记!是的,我开始也不愿意记这些格式化符号,所以不愿意用CTime直接格式化,但是当代码大量冗余的时候,我放弃了。还是用CTime格式化比较好。
    CTime格式化时间和CString的Format格式化字符串一样的用,很方便。如果需要的话,我们只要将此文拿来看就可以了,没有必要记住所有的格式化符号。当然知道一些常用的也是不错的。
    我们一般格式化的有:年月日时分秒星期几。总共也就7个最常用的,记住这个七个就够了。时分秒以大写来确定,为英文单词首字母,Hour(时)、Minute(分)、Second(秒),所以格式化符号分别为%H、%M、%S。这三个是雷打不动的。然后Year(年)、Month(月)、Day(日),因为月的首字母和分钟的重复,所以取小写,年份可以写成后两位或者完整的,所以大写表示完整年份,小写表示后两位,而日则只使用小写字母,这是与时分秒取相反做法,因为时分秒是大写的,所以日取为小写,保持两种风格,避免混淆。实际上%D是不存在的。同样,星期(week),和日一样,取小写,所以为%w。
    总结一下,常用的几个格式化符号列表为:
%H 小时(%h不存在)
%M 分钟
%S 秒钟(%s不存在)
%Y 完整年份,2016则为2016
%y 年份后两位,2016则为16
%m 月份
%d 日(%D不存在)
命名规则:时分秒大写,其他为小写。年份有后两位简写,所以大小写都用上了。
    默认情况下,格式化的数字使用两位,用0补齐,如时间为:2016年5月6日5:5:5,格式化【%Y年%m月%d日 %H:%M:%S】,结果为:2016年05月06日 05:05:05。这里就自动补零了。如果你不要自动补零,在中间加上#号,如【%#Y年%#m月%#d日 %#H:%#M:%#S】。除了格式化符号外,其他的字符都会直接输出。星期的话,%w得到的是一个数字,0-6分别是星期日-星期6。
    有这些知识就够用了。如果想了解更多的格式化符号,可以参考下面的列表:
%a - 星期(缩写英文),如Fri;
%A - 星期(全写英文),如Friday
%b - 月份(缩写英文),如Oct
%B - 月份(全写英文),如 October
%c - 月/日/年 时:分:秒,如 10/13/06 19:17:17
%d - 日期(1-31)
%H - 时(24小时制)(0-23)
%I - 时(12小时制)(0-12)
%j - 一年当中的第几天,(1-366)
%m - 月份(数字 1-12)
%M - 分(0-59)
%p - 12小时中的A M/PM指示,或者AM,或者PM
%S - 秒(0-59)
%U - 一年中的第几周,星期日作为每周的第一天(0-53)
%w - 星期(数字表示,0-6,0代表星期日)
%W - 一年中的第几周,星期一作为每周的第一天(0-53)
%x - 月/日/年,%c的前半段
%X - 时/分/秒,%c的后半段
%y - 年份(不带世纪,如 06)
%Y - 年份(带世纪,如 2006)
%z,%Z - 时区名称或缩写,如果时区未知,此字符为空,如“中国标准时间”
%% - %
“#”标志的含义:
1. %#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% - “#” 被忽略
2. %#c - 把%c中的数字变成英文,再在前面加上星期, 如:“Tuesday, March 14, 1995, 12:41:29”.
3.%#x - 把%x中的数字变成英文,再在前面加上星期,如:Tuesday, March 14, 1995
4.%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y - 如果开 头为0,去掉开头的0