惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
雷峰网
雷峰网
宝玉的分享
宝玉的分享
IT之家
IT之家
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园 - 叶小钗
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
美团技术团队
爱范儿
爱范儿
T
The Blog of Author Tim Ferriss
L
LangChain Blog
U
Unit 42
有赞技术团队
有赞技术团队
博客园_首页

博客园 - oscar_expansion

test - oscar_expansion - 博客园 WebPart Templates for VS.NET下载地址链接 易用性就这三条原则 将html源代码规范化,转换成XSL代码的asp工具(宝玉师傅) C#入门代码集 - oscar_expansion - 博客园 C#.Net函数和方法集 ASP.NET页面间的传值的几种方法 认识ASP.NET配置文件Web.config ASP Forum2.0学习笔记之二---了解Master Pages库 《Asp.Net Forums2.0深入分析》之 Asp.Net Forums是如何实现代码分离和换皮肤的 《Asp.Net Forums2.0深入分析》序(宝玉) Asp.Net Forums2配置文件(web.config)简要说明 URL欺骗之以假乱真 AspNetForums中对于用户权限....... ASP.NET Forums 2.0 新手安装指南 论坛在线人员的一个显示过程(转自ASP.NET Forums 官方中文网站) 彻底删除一个项目中的源代码管理信息(转自http://blog.joycode.com/) 从网络到现实-------美女写的2004高考作文 美国金牌推销员的成功秘诀 -做人做事箴言录
日期数据转换为字符串再转换为日期时要注意的一点(转自http:/...
oscar_expansion · 2005-06-09 · via 博客园 - oscar_expansion

日期数据转换为字符串再转换为日期时要注意的一点

我最近作的一个项目出现了下面这样的bug。(实际代码比这个复杂的多,这里只是演示这个bug的产生。)

DateTime dt1 = new DateTime(2005,5,31,15,31,00); string strDateTime = dt1.ToString("u"); // ...... 一些数据传递操作 DateTime dt2 = DateTime.Parse(strDateTime); int h = dt2.Hour;

DateTime类型的变量被转换成字符串,然后这个字符串又到处传递,走了很复杂的路,在接受方接受到这个字符串后,并再转换为DateTime格式,这时候两个时间的小时数不一样了。

上面演示中,dt1的 Hour 是 15 ,dt2 的 Hour 是 23。 进而造成我所碰到的这个bug。

解决方法,

DateTime dt1 = new DateTime(2005,5,31,15,31,00); string strDateTime = dt1.ToString("u"); DateTime dt2 = DateTime.Parse(strDateTime, null,
System.Globalization.DateTimeStyles.AdjustToUniversal);
int h = dt2.Hour;

或者

DateTime dt1 = new DateTime(2005,5,31,15,31,00); string strDateTime = dt1.ToString(); DateTime dt2 = DateTime.Parse(strDateTime); int h = dt2.Hour;

我猜想原因应该是:
我本机日期设置是某种格式,我转换为字符串的时候,用了不是我本机的这种格式(使用了UniversalSortableDateTimePattern 这种格式( using the format for universal time display )),而转换回去的时候,确用了本机默认格式,就造成了这个问题。解决方法就是通用一个识别格式。