TTime::FormatL详解
TTime::FormatL详解
示例:
TTime time;
Time.HomeTime();
TBuf<32> timeBuf;
time.FormatL(timeBuf,_L(“%F%Y/%M/%D,%H:%T:%S”)); // 2008/08/16,21:22:22
详解:
格式串分为本地相关和本地无关格式串,也就是说和系统的时间日期中设置的格式是否相关。
以下所有格式字符都要加%
本地无关:
%:因为%是参数字符,所以需要输出%的时候,要用两个连续的%%进行转义
*:加在%后,表示需要缩写,比如%*T表示对分钟进行缩写,如果不是两位数,则去掉前导0
C:6位的微秒,%C默认是6位的,%*C2表示只取前两位,%*C4则取前4位
S:2位的秒,加*去掉前导0
T:2位的分,加*去掉前导0
H:24小时制的时,加*去掉前导0
I:12小时制的时,加不加*都会去掉前导0
F:%F参数表示D/M/Y三个参数都是本地无关的,按照格式串原样输出,%F需要用在%D、%M、%Y之前
D:2位的日,加*去掉前导0
M:2位的月,加*去掉前导0
Y:4位的年,加*去掉前两个数字,比如2008只显示08
E:星期,英文环境下,Sunday~Saturday,加*显示缩写,Sun~Sat;中文环境下,星期一~星期日,加*显示缩写,一~日
N:月的名称,英文环境下,January~December,加*显示缩写,Jan~Dec;中文环境下,1月~12月,加*显示缩写,阿拉伯数字1~12。注意1月~12月数字都是阿拉伯数字,而不是汉字一~十二
W:2位数字,当前日期处于一年中的第几周,加*去掉前导0
X:日期后缀。例如%*D%X显示形如3rd(三号),%D%X显示形如02nd(二号)
Z:3位数字,当前日期处于一年中的第几天,加*去掉前导0
本地相关:
.:(点号)%.默认是小数点,表示分隔秒与毫秒之间的字符。可以通过TLocale::SetDecimalSeparator()设定。
::(冒号)%:表示获取本地设置中的时间分隔符,紧跟一个0~3范围的数字来指定哪一个日期分隔符。
格 式如下:S0 XX S1 YY S2 ZZ S3,其中XX、YY、ZZ代表时分秒,S0~S3代表4个分隔符。%:0表示第一个分隔符,依此类推。需要注意的是,本地设置中的时间分隔符只提供冒号 和点号两种字符。当然,可以通过TLocale:: SetTimeSeparator()对4个分隔符进行设置,模拟器和真机都未试验成功,待机状态的时间分隔符未更改。
/:(斜杠)%/表示获取 本地设置中的日期分隔符,和上面一条类似。XX、YY、ZZ代表年月日,其顺序可以通过 TLocale:: SetDateFormat()设置。对于分隔符,本地设置中提供4种字符以供选择,不过只对S1和S2有效,S0和S3总是空字符。通过 SetDateSeparator()可以对4个分隔符S0~S3进行分别设定,且可以是不同的,在模拟器和真机上都试验成功,待机状态的日期分隔符被成 功修改,但是进入系统的时间日期设定时,模拟器和真机均崩溃。
1:%1,本地设置中“年月日”顺序中的第一个。年月日顺序可以通过TLocale::SetDateFormat()进行设定,格式如下:
EDateAmerican US format (mm/dd/yyyy) 此时%1是月
EDateEuropean European format (dd/mm/yyyy) 此时%1是日
EDateJapanese Japanese format (yyyy/mm/dd) 此时%1是年
中国习惯上采用小日本格式
2:%2,本地设置中“年月日”顺序中的第二个。
3:%3,本地设置中“年月日”顺序中的第三个。
4:%4,和%2冗余,本地设置中是EDateAmerican的话,%4是日;EDateEuropean、EDateJapanese的%4是月
5:%5,和%3冗余,本地设置中是EDateAmerican、EDateEuropean的话,%4是年;EDateJapanese的%4是日
所 以,在本地相关的格式串中(没有%F参数),调用年月日可以直接使用%1%2%3即可,无需加上%M%D%Y(一般在需要去掉前导0的时候才需要加上 %*M%*D%*Y),分隔符全部使用%/1即可(因为本地的设置中只有S1和S2有效,并且是相同的),当然年月日顺序是个问题,如果需要指定顺序,那 肯定用%F的本地无关格式串了,那样简单直观地多,格式串也不容易写错。
A:不管本地设置中是12小时制还是24小时制,%A表示 am/pm总是显示。TLocale:: SetAmPmSpaceBetween()这个方法用来设置是否在时间和am/pm中间留有空格,显然这个设置会影响到最终格式化后的字符串。%*A会 强制压缩这个空格,不管本地是否设置了空格(需要注意的是,这里提到的本地设置,不一定在系统的时间日期中有设置选项,因为对于用户而言,只需要设定常用 的几个设置即可,比如这个AmPmSpaceBetween空格,在时间日期中就没有设置选项,系统默认是有空格的)。至于格式化后的字符串中am/pm 出现在时间的前面还是后面,就要看格式串怎么写了:%I:%T:%S%A,显示10:21:36 pm,%A%I:%T:%S,显示pm 10:21:36
A的扩展选项:
在A前面可以加上+或者-,
%+A表示只有TLocale:: AmPmSymbolPosition()被设置为ELocaleAfter时,才往格式化后的字符串中插入am/pm;
%-A表示只有TLocale:: AmPmSymbolPosition()被设置为ELocaleBefore时,才往格式化后的字符串中插入am/pm。
很显然TLocale:: AmPmSymbolPosition()这个设置在时间日期设置中也是没有的。
eg:%-A%I:%T:%S%+A这个串格式化之后的字符串中am/pm出现的位置和设定中的一致。
%-A%I:%T:%S%则表示只有设定了am/pm标志在前的情况下,am/pm才被插入到格式化后的字符串的开头。
B:和A唯一的区别就是只有在12小时制情况下才显示am/pm。同样也有%-B、%+B两种扩展选项。
J:判断本地设置是12小时制还是24小时制。%J表示本地设置是12小时制的情况下,在%J之后出现的前导0都被强制去除,所以有了%J参数,没有必要再加*号。
注意点:
使用%F表示本地无关时,不能使用%1~%5参数
不使用%F参数时,%M、%D、%Y参数不起任何作用,但是%*M、%*D、%*Y起到去除前导0(%*Y是取2位数年份)的作用
SDK 中指出:当使用%/0、%/1、%/2、%/3分隔%1~%5代表的日期的时候(或者使用%:0、%:1、%:2、%:3分隔%H、%I、%T、 %S代表的时间的时候),4个分隔符都要被指定,尽管系统默认S0和S3都是’/0’(空字符)。个人理解这么做是为了让格式串尽量规范,容易被读懂,事 实上这4个分隔符想怎么用就怎么用,不用都行,唯一的限制在于:当使用%.分隔秒和微秒的时候,%.应当被放在S2和S3的中间。(其实说到底%.系统默 认就是点号,一般程序员也不会无聊到调用TLocale::SetDecimalSeparator()方法来更改这个分隔符的)
TTime::FormatL详解相关推荐
- Windbg调试命令详解
Windbg调试命令详解 发表于2013 年 8 月 23 日 转载注明>> [作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Win ...
- C语言 程序的翻译 预处理 编译 汇编 链接 #define详解
1.程序的翻译环境和执行环境 执行环境:所在操作系统的平台 win10 win11 linux 翻译环境:MSVC gcc g++ 你的vs 2019 和2022 是集成开发环境把编辑器编译器全部给你 ...
- Linux命令详解之 ls
linux 命令详解 本文主要内容来自Linux man 手册 命令名称: ls ( list files / list directory contents )列举目录内容 命令用法: ls [选项 ...
- JavaMail详解
引用自http://blog.sina.com.cn/s/articlelist_1832656582_7_1.html [JavaMail]1 基础 A.简介 JavaMail,顾名思义,提供给开发 ...
- (5)ps详解 (每周一个linux命令系列)
(5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...
- 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...
- JVM年轻代,老年代,永久代详解
秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- 通俗易懂word2vec详解词嵌入-深度学习
https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法
深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...
最新文章
- Kaggle知识点:数据扩增方法
- 一、如何创建一个状态栏扩展(火狐插件扩展开发教程)
- boost::gregorian模块实现日期序列化的测试程序
- spring—AOP 的动态代理技术
- 兄弟姐妹们,祝大家圣诞节快乐!
- 栈的应用1——超级计算器(中缀与后缀表达式)C语言
- 12864c语言程序,LCM12864 C语言驱动程序
- 深度分析数据恢复原理——那些数据可以恢复那些不可以数据恢复软件
- translation exercise 3
- 计算机无法关闭密码保护,Windows 10不会关闭密码保护共享
- iis 支持apk json ipa下载
- Pandas+Pyecharts | 某APP大学生用户数据分析可视化
- 名创优品在香港上市:市值170亿港元 10元店也有大生意
- NO29、最小的K个数(应该记住大顶堆和小顶堆的区别与联系,并不难)
- JAVA代码怎样变成软件_怎么使JAVA程序变成可执行程序
- 人工智能有什么价值和意义
- 我对SNS游戏的初步理解
- 介绍一位零基础转行数据分析的好友
- idea插件下载很慢的解决办法
- 在Windows下编译iconv