从字符串中获取日期和时间

get date and time from the string

我有一个这种格式的字符串 Wed Sep 23 2015 15:30:00 GMT-0400 (Eastern Daylight Time)。如何从中获取日期 Sep 23 2015 和时间 15.30。我尝试了以下操作,但它引发了无效格式异常。

 DateTime dt=   DateTime.Parse(apptViewModel.strAppintmentDate).Date;
 TimeSpan tm = DateTime.Parse(apptViewModel.strAppintmentTime).TimeOfDay;

时区在此字符串中并不重要。而且我不必将日期从一个时区转换为另一个时区。

Wed Sep 23 2015 15:30:00 GMT 试试这个

DateTime dt = DateTime.ParseExact("Wed Sep 23 2015 15:30:00 GMT", "ddd MMM dd yyyy HH:mm:ss 'GMT'K", CultureInfo.InvariantCulture);

Wed Sep 23 2015 15:30:00 GMT-0400 试试这个

DateTime dt = DateTime.ParseExact("Wed Sep 23 2015 15:30:00 GMT-0400", "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);

如果 (Eastern Daylight Time) 包含在日期字符串中,那么试试这个

var dateString = "Wed Sep 23 2015 15:30:00 GMT-0400 (Eastern Daylight Time)";
DateTime dt = DateTime.ParseExact(dateString.Replace("(Eastern Daylight Time)", string.Empty).Trim(), "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);

不过你也可以用NodaTime
请参见乔恩·斯基特的回答 here