如何使用TimeZone信息解析日期时间

时间:2015-09-24 15:02:54

标签: c# .net datetime

我有以下字符串,

  

2015年9月24日星期四00:00:00 GMT + 0530(IST)

我尝试了以下但是它很适合。

   var twDate = DateTime.Parse("Thu Sep 24 2015 00:00:00 GMT+0530 (IST) ");

无法使用替换,因为IST无法修复。任何想法?

2 个答案:

答案 0 :(得分:2)

您需要使用普通字符串操作修剪时区缩写,然后指定自定义日期和时间格式字符串。例如:

// 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在这里的使用 - 您几乎肯定 想要使用当前线程的当前文化进行解析。

答案 1 :(得分:0)

如果您的字符串始终具有相同的格式和长度,您可以使用它来获取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);