关于c#:解析字符串“星期六,2017年1月14日12:12:12欧洲/华沙”到DateTime

Parsing string “Sat, 14 Jan 2017 12:12:12 Europe/Warsaw” to DateTime

我需要解析字符串

Sat, 14 Jan 2017 12:12:12 Europe/Warsaw

DateTime

我试过了:

1
2
var datestring ="Sat, 14 Jan 2017 12:12:12 Europe/Warsaw";
DateTime.TryParse(datestring, out expDt);

但它不起作用。

在此先感谢您的帮助。


我想你可以这样做:

1
2
3
4
5
6
7
8
string datestring ="Sat, 14 Jan 2017 12:12:12 Europe/Warsaw";
// remove"Europe/Warsaw" because it wont be used.
datestring = datestring.Substring(0, datestring.LastIndexOf(' '));
// now datestring looks like"Sat, 14 Jan 2017 12:12:12"
// so you should adapt the format:
string dateFormat ="ddd, dd MMM yyyy HH:mm:ss";
// now you can use DateTime.ParseExact to retrieve DateTime object
DateTime dt = DateTime.ParseExact(datestring, dateFormat, System.Globalization.CultureInfo.InvariantCulture);

这应该解析为纠正DateTime对象。

调用dt.ToString()应返回类似14.01.2017 12:12:12的内容

编辑:

对于其他假设DateTime对象有点了解TimeZone或依赖于它的其他人。 请阅读此答案从DateTime获取时区

这就是为什么对我来说从字符串中提取TimeZone是没用的。 因为它对DateTime对象本身没有影响。 如果(但我怀疑)有人有同样的问题,需要这个信息,那么这里是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
string datestring ="Sat, 14 Jan 2017 12:12:12 Europe/Warsaw";
// remove"Europe/Warsaw" because it wont be used.
string datestr = new string(datestring.Take(datestring.LastIndexOf(' ')));
// now datestring looks like"Sat, 14 Jan 2017 12:12:12"
// so you should adapt the format:
string dateFormat ="ddd, dd MMM yyyy HH:mm:ss";
// now you can use DateTime.ParseExact to retrieve DateTime object
DateTime dt = DateTime.ParseExact(datestring, dateFormat, System.Globalization.CultureInfo.InvariantCulture);
string timezonestr = new string(datestring.Skip(datestring.LastIndexOf(' ') + 1));

try {
    TimeZoneInfo timzeone = TimeZoneInfo.FindSystemTimeZoneById(timezonestr);
} catch { /* probably an error because there's no timezone called Europe/Warsaw */ }