关于C#日期格式化问题

时间:2021-09-22 13:58:45

一、前提摘要

  前段时间从博客园中看到一篇关于常用的日期格式化的帖子,帖子内容大致如下:

 //DateTime的ToString()对时间格式化的妙用
DateTime.Now.ToString("d"); //格式: 2010-10-22
DateTime.Now.ToString("D"); //格式: 2010年10月22日
DateTime.Now.ToString("f"); //格式: 2010年10月22日 9:26
DateTime.Now.ToString("F"); //格式: 2010年10月22日 9:26:38
DateTime.Now.ToString("g"); //格式: 2010-10-22 9:26
DateTime.Now.ToString("G"); //格式: 2010-10-22 9:26:38
DateTime.Now.ToString("m"); //格式: 10月22日
DateTime.Now.ToString("r"); //格式: Fri, 22 Oct 2010 09:26:38 GMT
DateTime.Now.ToString("s"); //格式: 2010-10-22T09:26:38
DateTime.Now.ToString("t"); //格式: 9:26
DateTime.Now.ToString("T"); //格式: 9:26:38
DateTime.Now.ToString("u"); //格式: 2010-10-22 09:26:38Z
DateTime.Now.ToString("U"); //格式: 2010年10月22日 1:26:38
DateTime.Now.ToString("y"); //格式: 2010年10月
DateTime.Now.ToString("dddd"); //格式: 星期五
DateTime.Now.ToString("dddd, MMMM dd yyyy"); //格式: 星期五, 十月 22 2010
DateTime.Now.ToString("ddd, MMM d yy"); //格式: 五, 十月 22 10
DateTime.Now.ToString("dddd, MMMM dd"); //格式: 星期五, 十月 22
DateTime.Now.ToString("M/yy"); //格式: 10-10
DateTime.Now.ToString("dd-MM-yy"); //格式: 22-10-10

二、经验教训 在没有认真考究的情况下,我使用了这个函数:DateTime.Now.ToString("d"); 我傻傻的相信了它的格式等同于yyyy-MM-dd。结果,悲剧发生了。 我写的模块中,有一段SQL语句,需要用到这样的日期格式:yyyy-MM-dd。 而在我的电脑上,系统日期格式同样为:yyyy-MM-dd。 所以,自己各种测试都没有问题,选择对应的日期即可查出数据。
但是,在同事的电脑上测试的时候,却发现选择日期后查询不到结果了。

于是,通过DeBug发现了问题所在:同事的电脑系统日期格式为:yyyy/MM/dd。

而用DateTime.Now.ToString("d");格式化后的日期类型也是:yyyy/MM/dd。

三、问题重现
关于C#日期格式化问题
关于C#日期格式化问题关于C#日期格式化问题
关于C#日期格式化问题
关于C#日期格式化问题


四、反思总结
在格式化日期类型时,若不确定自己使用的函数在不同环境下得到的结果是否一致。

那就不要偷懒,用简单易懂的格式化方
式:DateTime.Now.ToString("yyyy-MM-dd");