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

因此,每逢日期显示,我的写法通常类似下面代码所示,这样能根据需求取舍,随心所欲的控制显示格式、顺序,也不用纠结分隔符到底是什么了,且ToString方法中,每个字符表示对应单词的首字母,并不难记。

DateTime dt=new DateTime(2012,12,6,13,19,0);
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("MM");   // 12
dt.ToString("MMM");  // Dec
dt.ToString("MMMM"); // December

同理,代表日的“d”也有同样的特性,不同点是“ddd”和“dddd”表星期而不是几号。

dt.ToString("dd");   // 06
dt.ToString("ddd");  // Thu
dt.ToString("dddd"); // Thursday

不同区域文化的日期

时间显示难免会碰到区域文化的问题,比如运行最开始的例子,“PM”可能会显示为“下午”:

dt.ToString("yyyy-MM-dd hh:mm:ss tt zz"); // 2012-12-06 01:19:00 下午 +08

用文字显示月份时,可能会直接显示“十二月”:

dt.ToString("MM");   // 12
dt.ToString("MMM");  // 十二月
dt.ToString("MMMM"); // 十二月

区域文化显示不同往往会造成问题,为避免麻烦,就要指定具体的区域文化。一般来说,英文较常用的,指定方式也最简单,使用CultureInfo类的静态属性InvariantCulture即可:

dt.ToString("yyyy-MM-dd hh:mm:ss tt zz", CultureInfo.InvariantCulture); // 2012-12-06 01:19:00 PM +08

当需要使用其他的区域文化时,就要实例化指定的CultureInfo类,比如下例中分别显示中文、日文、英文的星期:

dt.ToString("dddd");                                // 星期四
dt.ToString("dddd", new CultureInfo("ja-JP"));      // 木曜日
dt.ToString("dddd", CultureInfo.InvariantCulture);  // Thursday

这里用“ja-Jp”表示日文,也可用“ja”。中文显示时,可以指定“zh-TW”来显示繁体字。如果想显示其他区域文化的文字,可以到这个MSDN页面的列表中查找对应字符

DateTime用法二的更多相关文章

  1. react基础用法二(组件渲染)

    react基础用法二(组件渲染) 如图所示组件可以是函数 格式:function 方法名(){ return <标签>内容</标签>} 渲染格式: <方法名 />  ...

  2. Java关于Properties用法(二)——替换配置文件中的参数

    上一章讲了配置文件的基本用法,虽然上一章已经可以解决一些需求,但还不些不足之处.假如,配置文件里面的字符串有一部分需要经常变动,另外一些不需要,上一章的方法就不方便了,所以这章主要讲如何在配置文件中使 ...

  3. C#时间格式化(Datetime)用法详解

    Datetime.ToString(String, IFormatProvider) 参数format格式详细用法: 格式字符 关联属性/说明 d ShortDatePattern D LongDat ...

  4. 关于Unity中的刚体和碰撞器的相关用法(二)

    在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...

  5. requirejs的用法(二)

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

  6. Dapper学习 - Dapper的基本用法(二) - 存储过程/函数

    上一篇貌似少介绍了自定义函数和存储过程, 因为这两个也可以使用查询的方式来实现功能, 这一篇就补上 一.自定义函数的创建和调用 (mysql的) Delimiter $$ drop function ...

  7. ReSharper 配置及用法(二)

    下载工具 一:Reshaper是什么 即便是那些整天攻击 .NET 和 C# 的人,也常常不得不承认 Visual Studio 确实是个够强大的 IDE,除非他认为更少的 IDE 功能和命令行调试才 ...

  8. javaweb学习总结二十六(response对象的用法二 下载文件)

    一:浏览器打开服务器上的文件 1:读取服务器上面的资源,如果在web层,可以直接使用servletContext,如果在非web层 可以使用类加载器读取文件 2:向浏览器写数据,实际上是把数据封装到r ...

  9. DateTime用法

    //今天 DateTime.Now.Date.ToShortDateString(); //昨天,也就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateStri ...

随机推荐

  1. const常量折叠

    首先来看一个例子: int main(int argc, char* argv[]) { ; int *j = (int *) &i; *j=; cout<<&i<& ...

  2. UIView不能使用UITableView的Static表格的解决方法

    在UIView中嵌入一个Container,用Container来包含UITableViewController即可,到storyboard上显示如下:

  3. Android Studio 快捷键(转)

    Android Studio 快捷键 操作 Mac OSX Win/Linux 注释代码(//) Cmd + / Ctrl + / 注释代码(/**/) Cmd + Option + / Ctrl + ...

  4. Rx RxJava【Operators】操作符

    操作符分类 ReactiveX的每种编程语言的实现都实现了一组操作符的集合.不同的实现之间有很多重叠的部分,也有一些操作符只存在特定的实现中.每种实现都倾向于用那种编程语言中他们熟悉的上下文中相似的方 ...

  5. Dhroid框架笔记(DhNet、Adapter)

    3.1.1 DhNet用于获取网络中的数据 DhNet net=new DhNet("路劲"); net.addParam("key", "参数&qu ...

  6. centos6 x86 安装 oracle 11g2r 日志

    一.安装centos 6.5 二.安装ora所需的库 三.修改centos内核 四.建用户组和目录结构等 五.安装ora11g2r 六.安装sqlplus的翻页程序和help补丁 七.自启动脚本 八. ...

  7. 安卓之cannot convert from Fragment1 to Fragment

    在写一个音乐播放器的时候,用到了fragment,结果在需要返回Fragment的方法里面,无法将Fragment1(Fragment的子类)强制转换成Fragment, 很是纳闷,我是参照一个开源代 ...

  8. [C++] 对象地址与接口指针的故事

    刚想到一个问题,一直在思考C++中对象地址与接口指针的故事. 问题:多继承的情况下,一个具体类对象实现了多个接口,那么多该对象获取的不同接口指针是一样的吗?不是一样吗?不是对象地址吗?-- 困惑原因, ...

  9. Google jQuery URL

    Query 在线地址:https://developers.google.com/speed/libraries/devguide?hl=zh-CN#jquery此地址里还包含了很多的JS框架.

  10. Python datetime time 常用操作

    测试版本: Python 2.7 获取当前时间的两种方法 import datetime,time now = time.strftime("%Y-%m-%d %H:%M:%S") ...