1.转载自http://www.wangqi.com/n10037c53.aspx 如有侵权请联系我
DateTime.ToString()是一个好东西,也非常便于使用,基本上你指定什么他就显示什么,呵呵,没错,是“基本上”,MS有时候不太好用,比如下面这段:
- static void Main(string[] args)
- {
- Console.WriteLine(DateTime.Now.ToString("yyyyMMdd"));
- Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd"));
- Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd"));
- Console.WriteLine(DateTime.Now.ToString("yyyy年MM月dd日"));
- Console.WriteLine(DateTime.Now.ToString("yyyy~MM~dd"));
- Console.Read();
- }
你能看出最终的输出结果是什么吗?猜一猜,哪行会和你预想的不一样?
看结果:
- 20070121
- 2007-01-21
- 2007-01-21
- 2007年01月21日
- 2007~01~21
第三行~~~~~~~~~
为什么DateTime.Now.ToString("yyyy/MM/dd")的输出结果不是 2007/01/21 呢?去控制面板里设置一下计算机的短日期格式,发现这个是受计算机短日期格式的影响,可是这个ToString()是不是不应该存在这个问题?不是说好“自定义”的吗?
引申问题:如何用ToString()输出 2007/01/21 这个样子的格式呢?修改计算机设置的那个办法不算数
解决方法倒是有,使用ToString()的另一个重载:
DateTime.Now.ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
不过还是感觉不爽啊
2转载自 http://hi.baidu.com/zengl/blog/item/62a435dba7dcb760d0164ef3.html 如有侵权请联系我
DateTime.ToString()中的时间格式模式详细说明 :
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
h 12小时制的小时。一位数的小时数没有前导零。
hh 12小时制的小时。一位数的小时数有前导零。
H 24小时制的小时。一位数的小时数没有前导零。
HH 24小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
如何实现日期和AM/PM的格式??(04/01/2003 PM) ?
解决方案:
DateTime dt = DateTime.Now;
Response.Write(dt.ToString("yyyy-mm-dd hh:mm,tt"));