摘要:我最近作的一个项目出现了下面这样的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();
......[
阅读全文]