如何转换此字符串:
string aa ="Thu Jul 02 2015 00:00:00 GMT+0100 (GMT Standard Time)";
进入DateTime。
我尝试使用Convert.ToDateTime(aa);
但没有用
感谢。
编辑:错误消息 - 字符串未被识别为有效的DateTime
答案 0 :(得分:2)
使用DateTime.Parse方法:
using System;
public class Example
{
public static void Main()
{
string[] dateStrings = {"2008-05-01T07:34:42-5:00",
"2008-05-01 7:34:42Z",
"Thu, 01 May 2008 07:34:42 GMT"};
foreach (string dateString in dateStrings)
{
DateTime convertedDate = DateTime.Parse(dateString);
Console.WriteLine("Converted {0} to {1} time {2}",
dateString,
convertedDate.Kind.ToString(),
convertedDate);
}
}
}
// These calls to the DateTime.Parse method display the following output:
// Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
// Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
// Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM
答案 1 :(得分:1)
您可以将DateTime.TryParseExact
与正确的格式字符串一起使用:
PKG_CHECK_MODULES
如果字符串末尾包含string dtString = "Thu Jul 02 2015 00:00:00 GMT+0100";
string format = "ddd MMM dd yyyy HH:mm:ss 'GMT'K";
DateTime date;
bool validFormat = DateTime.TryParseExact(dtString, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
Console.Write(validFormat ? date.ToString() : "Not a valid format");
,您可以先删除它:
(GMT Standard Time)
或使用此格式模式:
dtString = dtString.Replace("(GMT Standard Time)", "").Trim();
答案 2 :(得分:0)
由于您的字符串中有UTC offset,我更愿意解析DateTimeOffset
而不是DateTime
。并且无法解析您的GMT
和(GMT Standard Time)
部分而无法逃脱它们。
顺便提一下,DateTime
和DateTimeOffset
都是时区认知。对于这种情况,DateTimeOffset
比DateTime
好一点。它具有UTC偏移但这并不能保证时区信息,因为不同的时区可以具有相同的偏移值。
即使它们是,时区缩写也不是标准化的。 CST
例如有几个含义。
string s = "Thu Jul 02 2015 00:00:00 GMT+01:00 (GMT Standard Time)";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(GMT Standard Time)'",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dto))
{
Console.WriteLine(dto);
}
现在,DateTimeOffset
为{02.07.2015 00:00:00 +01:00}