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()方法来更改这个分隔符的)

转载于:https://www.cnblogs.com/zziss/archive/2010/01/14/1647800.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

入职第一天,我接手了号称【屎山】的祖传代码,这还能卷吗???

公司各种各样的祖传代码都是令新人虎躯一震的代码&#xff0c;因为有时候你根本不知道它是干嘛的&#xff0c;甚至觉得它毫无用处&#xff0c;关键是 还绝对不能动&#xff0c;碰一段改半年&#xff0c;别问我怎么知道的。最讽刺的是&#xff0c;你可能为了修改代码&#xff0c…

设计模式之迭代器

迭代器模式介绍集合的结构迭代器模式是一种行为设计模式&#xff0c;让你能在不暴露集合底层表现形式(列表、栈、树等)的情况下遍历集合中所有的元素。迭代器模式满足了单一职责和开闭原则&#xff0c;外界的调用方也不需要知道任何一个不同的数据结构在使用上的遍历差异。迭代…

倒啤酒竟能拿到诺贝尔物理学大奖!明明是普通操作,凭什么这么强?

全世界只有3.14 % 的人关注了青少年数学之旅倒啤酒&#xff0c;是艺术&#xff0c;更是一门学问。每个初来社会报道的男孩&#xff0c;都必须掌握这个酷炫技能。它是从古自今的文化传承&#xff0c;也是一个男人成熟的标志。向快手老铁致敬然而&#xff0c;理想很丰满&#xff…

铁山靠之——HarmonyOS基础 - 1.0

HarmonyOS学习第一章 一、HarmonyOS简介1.1 安装和使用DevEco Studio1.2 环境配置1.3 项目创建1.4 运行程序1.5 基本工程目录1.5.1 工程级目录1.5.2 模块级目录1.5.3 app.json51.5.4 module.json51.5.5 main_pages.json 二、TypeScript快速入门2.1 简介2.2 基础类型2.2.1 布尔值…

vb.net2.0 Hmac-md5加密算法

2019独角兽企业重金招聘Python工程师标准>>> <summary> Hmac-md5加密算法。 </summary> <param name"APassWord">加密串(即密码)</param> <param name"ASourceStr">原始字符串</param> <returns>&l…

[转载]AXIS学习笔记

转自&#xff1a;http://blog.csdn.net/ronghao100/archive/2005/06/08/390530.aspx 系列&#xff1a;http://www.blogjava.net/RongHao/archive/2007/06/12/123644.html 前天头告诉我用SOAP WEB服务开发一个客户程序&#xff0c;用来与企业内部的ERP进行交互。晚上赶快找相关的…

解决VS2010 beta2 安装后html标签和script智能提示不起作用的问题

此文已经移至&#xff1a;解决VS2010 beta2 安装后html标签和script智能提示不起作用的问题 安装VS2010 beta2 后&#xff0c;发现正常的html标签的智能提示不起作用&#xff0c;比如<a>,<p>&#xff0c;还有在<script>里面也没有了js的智能提示。 解决办法…

如何禁用 ASP.NET 网站的所有的 浏览器缓存 ?

咨询区 Palani&#xff1a;我在寻找一个方法禁用某个 ASP.NET MVC 网站的所有浏览器缓存&#xff0c;我发现了如下方法。Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); Response.Cache.SetNoStore();而且我也发现了可以在 html 上追加一个 meta 标记。…

初级Java开发面试必问项!!! 标识符、字面值、变量、数据类型,该学学了!

最近事情太多&#xff0c;没太时间写博客。今天抽空再整理整理面试中的那点事吧&#xff0c;帮助那些正在找工作或想跳槽找工作的学弟学妹们。 前面我己写过多篇推文&#xff0c;相信看过我文章的伙伴们已经了解掌握了不少。从目前流行的开发技术、常见的面试问题以及问题的答…

你还记得当初是怎么对我的吗? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源阿粪青&#xff0c;侵权删&#xff09;

4项技巧使你不再为PHP中文编码苦恼

2019独角兽企业重金招聘Python工程师标准>>> PHP程序设计中中文编码问题曾经困扰很多人&#xff0c;导致这个问题的原因其实很简单&#xff0c;每个国家(或区域)都规定了计算机信息交换用的字符编码集&#xff0c;如美国的扩展 ASCII 码&#xff0c;中国的 GB2312-8…

Symbian开发平台的搭建之VC++6.0Carbide C++ 2.0

Symbian开发平台的搭建之VC6.0 来源&#xff1a;http://hi.baidu.com/mrico/blog/item/d518f6ea3f0e5dd2d439c90b.html 开始学习Symbian&#xff0c;可是开发环境配置了一天才完成。真是好事多磨呀&#xff0c;于是把心得写下来与大家分享&#xff0c;避免刚入门的同学们走…

摄影技巧12法

一、阳光十六法则 &#xff08;Sunny 16 Rule&#xff09; “阳光十六法则”是在没有测光表时&#xff0c;正确估算日光下曝光数值的方法&#xff0c;所以这条法则只有在阳光充足的情况下适合使用。将光圈设为 F/16&#xff0c;快门与ISO同步&#xff0c;或者略快。如&#xff…

Hello Blazor:(9)Source Generators生成导航菜单

前言最近写了多篇关于Source Generators的文章&#xff0c;发现它确实可以简化我们的部分开发工作。这不&#xff0c;我又盯上了Blazor。问题默认的NavMenu.razor组件用于显示导航菜单&#xff0c;它的部分代码如下&#xff1a;<div class"NavMenuCssClass" oncli…

你绝对没想过原来数学家这么流氓,一言不合就进行暴力证明

全世界只有3.14 % 的人关注了青少年数学之旅1最经典的“无字证明”1989 年的《美国数学月刊》&#xff08;American Mathematical Monthly&#xff09;上有一个貌似非常困难的数学问题&#xff1a;下图是由一个个小三角形组成的正六边形棋盘&#xff0c;现在请你用右边的三种&a…

面试阿里被问到JVM,不逼逼赖赖,直接盘给面试官看!!!

面试阿里被问到JVM&#xff0c;不逼逼赖赖&#xff0c;直接盘给面试官看&#xff01;&#xff01;&#xff01;概述JVM体系结构类加载机制类加载器类加载过程双亲委派机制全盘负责委托机制打破双亲委派机制自定义类加载器实现JVM运行时数据区程序计数器虚拟机栈本地方法栈堆方法…

数学图形(1.20)N叶草

有N个叶子的草 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 vertices 1000 t from 0 to (2*PI) r 10 n rand_int2(3, 10) p 1 cos(n*t) sin(n*t)^2 x p*cos(t) y p*sin(t) N叶草面_1 vertices D1:5…

虚拟主机网速测试

ping 命令简单测试网速&#xff0c;我来测一下自己刚买的虚拟主机废话少说&#xff0c;上图&#xff1a;&#xff08;看不清的&#xff0c;点击图片看大图&#xff09;A.中国电信&#xff08;学校的光缆&#xff0c;教师办公专用至少30M&#xff0c;具体数字不清楚&#xff0c;…

Visual Studio 2022 Preview 3和2019 16.11发布

Visual Studio 2022 Preview 3 主要特点个人和团队生产力附加到进程改进新项目设计器黑暗主题提升开发现代应用远程测试新的JavaScript和TypeScript项目类型在指尖上的创新诊断分析同时使用多个GIT存储库详情请参考&#xff1a;https://devblogs.microsoft.com/visualstudio/vi…

获取DataTable字段唯一值(DISTINCT)

///<summary>///将所选字段的唯一值复制到一个新的 DataTable。 ///<para>如果字段包含 NULL 值&#xff0c;目标表中的记录还包含 NULL 值</para>///</summary>///<param name"sourceTable">源数据表</param>///<pa…