DataTime显示格式【转】

随心所欲的DateTime显示格式

任何项目,难免会碰到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页面的列表中查找对应字符。

时间: 2024-10-10 16:25:59

DataTime显示格式【转】的相关文章

Oracle之sqlpluse显示格式

SQL> show linesize; #设置每行显示的字符数 linesize 10000 SQL> show pagesize; #设置每页显示的行数 pagesize 1000 SQL> set linesize 100; SQL> set pagesize 300; SQL> show linesize; linesize 100 SQL> show pagesize; pagesize 300 col 列名 for a20 #设置指定列的显示格式 Oracle

起止时间控制,显示格式控制

//<script src="<!--{$smarty.const.BASE_PATH}-->/js/public/My97DatePicker/WdatePicker.js"></script> html中引入WdatePicker.js文件 一.开始结束时间相互限制 例1.两个input中时间相关联 <tr> <td>开始时间<label class="must-tag">*</lab

Redmine管理项目3-调整用户显示格式

在 Redmine 中新建用户时是这样的: 必须指定姓氏.名字,然后 Redmine 默认是按“名字 姓氏”这种方式显示用户.比如“张三”,会显示成“三张”……看起来好别扭啊. 怎么调整呢,参看 Redmine 的 RedmineSettings 页面中关于 Users display format 的说明: 但是好像修改 config/settngs.yml 会有问题,这个文件也告诉你表修改,应该使用 admin 帐号,到配置中来修改.好,我试了下,成功了. 先看 admin 的用户信息: a

Matlab基础学习-----数据显示格式(设置)

使用format来控制显示格式,但这只是影响结果的显示,不影响其计算与存储.下面以1/3为例,对数据显示进行说明: format|format short          5位定点表示                                            0.3333 format long                15位定点表示                                                0.333333333333333 format

MVC中的@Html.DisplayFor如何控制日期的显示格式

在Sql Server中,如果将某字段定义成日期 时间 类型DateTime,那么在视图中会默认显示成年月日时分秒的方式(如 2013/8/6 13:37:33) 如果只想显示成年月日或者其他自定义形式,怎么办?下面的方法可以解决: 1.在Share文件夹下,创建一个文件夹TimeConversion 2.在TimeConversion文件夹下,创建一个MyTime.cshtml视图 3.MyTime.cshtml视图中只有两行代码即可: ? 1 2 @model System.DateTime

如何修改系统时间显示格式

查询系统时间: [email protected]> select sysdate from dual; SYSDATE---------30-APR-17 会话级别修改时间显示格式: [email protected]> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. [email protected]> select sysdate from dual; SYSDATE------

JSP页面显示 Date 和 Double数据类型类时自定义显示格式

问题:java 中的Double类型数据,当是一个大数值时将以科学计数法显示.在工作中希望不显示科学计数法. 还有在工作中需要个性化日期的显示格式. 在JSP页面我们用<c:forEach>标签循环输出时候,修改日期类的显示格式,设置double类型的数据不用科学计数法显示. 可以使用: <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 个性化日期显示格式: &l

数据库里面DataTime时间类型字段,如果为null时

tran.TransactionTime = bet.CreationDate.ToString() == "0001/1/1 0:00:00" ? DateTime.Now : bet.CreationDate; 数据库里面DataTime时间类型字段,如果为null时,查询出来时间值为"0001/1/1 0:00:00" 这是一个溢出SqlDateTime超出范围的时间值,将它再插入数据库时会报错的 数据库里面DataTime时间类型字段,如果为null时,布布

关于时间的操作(JavaScript版)——页面显示格式:年月日 上午下午 时分秒 星期

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-