随心所欲的DateTime显示格式
任何项目,难免会碰到DateTime的显示问题,.net框架虽提供丰富多样的显示方法,但我很少使用,因老忘记细节,每次都要纠结到底月份在前还是年份在前;日期分隔符到底是“/”,还是“\”,还是“-”等等。

因此,每逢日期显示,我的写法通常类似下面代码所示,这样能根据需求取舍,随心所欲的控制显示格式、顺序,也不用纠结分隔符到底是什么了,且ToString方法中,每个字符表示对应单词的首字母,并不难记。
dt.ToString("yyyy-MM-dd hh:mm:ss tt zz"); // 2012-12-06 01:19:00 PM +08
- y : 年
- M : 月
- d:日
- h或H:小时
- m:分钟
- s:秒
- t:12小时制的上下午(AM/PM)
- z:时区
这些字符大小写敏感,“h”和“H”分别对应12和24小时制时间。由于月-Month和分钟-Minute首字母都是“M”,所以用大小写来区分,大写表月份,小写表分钟。
日和月的多样化显示
有时月份的显示会多种多样,有放开头全英文显示的,有只显示前三个字母的,有放中间用逗号隔开的。而碰到这种情况,我见过有些代码用switch-case依次判断月份来实现,略显麻烦,实际上,上文中的方法稍加改变就可完成。
比如月份,ToString方法中“M”的数量决定显示格式。
dt.ToString("MMM"); // Dec
dt.ToString("MMMM"); // December
同理,代表日的“d”也有同样的特性,不同点是“ddd”和“dddd”表星期而不是几号。
dt.ToString("ddd"); // Thu
dt.ToString("dddd"); // Thursday
不同区域文化的日期
时间显示难免会碰到区域文化的问题,比如运行最开始的例子,“PM”可能会显示为“下午”:
用文字显示月份时,可能会直接显示“十二月”:
dt.ToString("MMM"); // 十二月
dt.ToString("MMMM"); // 十二月
区域文化显示不同往往会造成问题,为避免麻烦,就要指定具体的区域文化。一般来说,英文较常用的,指定方式也最简单,使用CultureInfo类的静态属性InvariantCulture即可:
当需要使用其他的区域文化时,就要实例化指定的CultureInfo类,比如下例中分别显示中文、日文、英文的星期:
dt.ToString("dddd", new CultureInfo("ja-JP")); // 木曜日
dt.ToString("dddd", CultureInfo.InvariantCulture); // Thursday
这里用“ja-Jp”表示日文,也可用“ja”。中文显示时,可以指定“zh-TW”来显示繁体字。如果想显示其他区域文化的文字,可以到这个MSDN页面的列表中查找对应字符。
随心所欲的DateTime显示格式的更多相关文章
- .NET DateTime 显示格式
备注 format 参数应包含单个格式说明符 (请参阅 标准日期和时间格式字符串) 或自定义格式模式 (请参阅 Cadenas con formato de fecha y hora pers ...
- DataTime显示格式【转】
随心所欲的DateTime显示格式 任何项目,难免会碰到DateTime的显示问题,.net框架虽提供丰富多样的显示方法,但我很少使用,因老忘记细节,每次都要纠结到底月份在前还是年份在前:日期分隔符到 ...
- DateTime用法二
任何项目,难免会碰到DateTime的显示问题,.net框架虽提供丰富多样的显示方法,但我很少使用,因老忘记细节,每次都要纠结到底月份在前还是年份在前:日期分隔符到底是“/”,还是“\”,还是“-”等 ...
- MySQL中DATETIME、DATE和TIMESTAMP类型的区别
一.TIMESTAMP 显示格式:YYYY-MM-DD HH:MM:SS 时间范围:[ '1970-01-01 00:00:00'到'2037-12-31 23:59:59'] TIMESTAMP D ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- mysql支持的数据类型及其测试
原文:mysql支持的数据类型及其测试 1.基础知识 1.1如何来查看mysql的帮助手册 ?int Help float; 1.2创建表的规则 CREATE TABLE [IF NOT EXISTS ...
- MySQL学习分享-->日期时间类型
日期时间类型 ①如果要用来表示年月日时分秒,一般使用datetime类型: ②如果要用来表示年月日,一般使用date类型: ③如果要表示时分秒,一般使用time类型: ④如果只是表示年份,一般使用ye ...
- mysql中data和datatime的区别
1.显示格式的区别 Date显示格式:YYYY-MM-DD:DateTime显示格式:YYYY-MM-DD HH:mm:ss. 2.显示范围的区别 Date显示范围是1601-01-01 到 9999 ...
随机推荐
- PHP webserver 之 soap non-wsdl
non-wsdl 顾名思义就是不使用wsdl文件进行的webserver服务 事实上个人觉得用wsdl模式还不如使用non-wsdl模式,wsdl模式稍加麻烦! 1.网站运行环境下开启soap模块(p ...
- 【EF】 proxy
逐步解說:使用 WCF 序列化 POCO Proxy (Entity Framework) .NET Framework 4 POCO Proxy 型別無法由 Windows Communicat ...
- mir9-lua——《热血沙城》45度ARPG手游-Lua移植版
mir9——<热血沙城>,是9秒论坛开源的一个使用Cocos2d-x-2.2.1引擎开发的45度ARPG手游Demo,源代码为c++.mir9-lua是mir9的Lua移植版,使用Quic ...
- 关于HTML Input
定义:<input> 标签用于搜集用户信息.Input表示Form表单中的一种输入对象. 根据不同的 type 属性值,输入字段拥有很多种形式.输入字段可以是文本字段.复选框(单/复选框) ...
- GitHub 有哪些优秀的项目
GitHub 有哪些优秀的项目 http://www.zhihu.com/question/20584141
- 1014: [JSOI2008]火星人prefix - BZOJ
Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 ...
- js数组的迭代
以下介绍两种数组形式的迭代:一是简单的数组:二是数组里面套Object(json格式). 一.var arr=[1,2,3] var arr=[1,2,3] for (var i = 0; i < ...
- 【链表】bzoj 1150: [CTSC2007]数据备份Backup
1150: [CTSC2007]数据备份Backup Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1136 Solved: 458[Submit] ...
- Samza文档翻译 : Comparison Introduction
http://samza.incubator.apache.org/learn/documentation/0.7.0/comparisons/introduction.html 这里有一些使得Sam ...
- C: 数组形参
知识这个东西,真是知道的越多就不知道的越多,C/C++这塘水得多深啊,哈哈.看下面3个片段:<一> 1 void fun(char a[100]) { 2 fprintf( ...