如何解析带有TimeZone信息的日期时间
本文关键字:日期 时间 信息 TimeZone 何解析 | 更新日期: 2023-09-27 18:14:19
我有以下字符串,
星期四Sep 24 2015 00:00:00 GMT+0530 (IST)
我试着跟随,但它失败了。
var twDate = DateTime.Parse("Thu Sep 24 2015 00:00:00 GMT+0530 (IST) ");
不能使用replace,因为IST不会被修复。什么好主意吗?
您需要使用普通字符串操作删除时区缩写,然后指定自定义日期和时间格式字符串。例如:
// After trimming
string text = "Thu Sep 24 2015 00:00:00 GMT+0530";
var dto = DateTimeOffset.ParseExact(
text,
"ddd MMM d yyyy HH:mm:ss 'GMT'zzz",
CultureInfo.InvariantCulture);
Console.WriteLine(dto);
注意这里CultureInfo.InvariantCulture
的使用——你几乎可以肯定不想使用当前线程的当前区域性进行解析。
如果你的字符串总是有相同的格式和长度,你可以使用这个来获得UTC:
String dtstr = "Thu Sep 24 2015 00:00:00 GMT+0530 (IST)";
int zoneMin = int.Parse(dtstr.Substring(29, 2)) * 60 + int.Parse(dtstr.Substring(31, 2));
if (dtstr.Substring(28, 1) == "+") zoneMin = -zoneMin;
DateTime dt = DateTime.Parse(dtstr.Substring(0, 24)).AddMinutes(zoneMin);