一、前提摘要
前段时间从博客园中看到一篇关于常用的日期格式化的帖子,帖子内容大致如下:
//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。
三、问题重现
四、反思总结
在格式化日期类型时,若不确定自己使用的函数在不同环境下得到的结果是否一致。
那就不要偷懒,用简单易懂的格式化方式:DateTime.Now.ToString("yyyy-MM-dd");