解题思路分析:一个跨Timezone的DateTime
如果遇到不同Timezone的时间(如下),你会怎么处置呢
Sat, 14 Dec 2002 21:00:40 -0800
1。通常用的方法是:DateTime.Parse或Convert.ToDateTime()
均告失败,去掉-0800,就可以了,但不是正确的时间
2。反其道而行,我们如何得到带timezone的时间呢,如下
DateTime.Now.ToString("ddd, dd MMM yyyy H:m:s zzz")
结果 Sun, 15 Dec 2002 13:40:9 +08:00
既然能生成这样的字符串,就应该可以得到对应的DateTime
如下方法:
DateTime.ParseExact("Sun, 15 Dec 2002 13:40:9 +08:00","ddd, d MMM yyyy H:mm:s zzz",null)
结果:12/15/2002 1:40:09 PM
这时候改变TimeZone为+07:00,得到答案
结果:12/15/2002 2:40:09 PM 正确。
这时候将Sat, 14 Dec 2002 21:00:40 -0800代进去:
DateTime.ParseExact("Sat, 14 Dec 2002 21:00:40 -08:00","ddd, d MMM yyyy H:mm:s zzz",null)
结果12/15/2002 1:00:40 PM 正确。
3.剩下的就是将-0800转为-08:00
strDate=Regex.Replace(strDate,@"(\s(\+|\-)\d{2})(.?)(\d{2}).*","$1:$4");
旨在:
1.讨论更多.net内在的函数(包含DateTime系列)
2.学着独立解决问题,不要只想着找网上的成功例子。
3.新年来临之际,给大家拜个年,和圣诞快乐等。