解析自定义日期时间字符串

Parsing a Custom DateTime string

我正在尝试使用 ParseExact() 方法将字符串解析为 DateTime。

string input = "Wednesday, March 4, 2015 - 9:00 AM PST";
string format = @"dddd, MMMM d, yyyy - h:mm tt \P\S\T";

解析此格式的输入失败,但我不明白为什么会出错。

如果我这样做

Console.WriteLine(DateTime.Now.ToString(format));

然后我得到与上述输入格式相同的输出。所以这表明格式确实是正确的。

感谢您的想法 - Saqib

当前的区域设置问题(或更具体地说 week/month 翻译的日期):

var ok = DateTime.ParseExact(
     "Wednesday, March 4, 2015 - 9:00 AM PST", "dddd, MMMM d, yyyy - h:mm tt PST",
      new CultureInfo("en-us"))
var failed = DateTime.ParseExact(
     "Wednesday, March 4, 2015 - 9:00 AM PST", "dddd, MMMM d, yyyy - h:mm tt PST",
      new CultureInfo("de-de"))

就目前而言,您的示例代码无法编译,因为转义字符“\”本身需要转义。或者,您可以在格式字符串前加上“@”以使其成为文字。

以下作品;

string input = "Wednesday, March 4, 2015 - 9:00 AM PST";
string format = @"dddd, MMMM d, yyyy - h:mm tt \P\S\T";
DateTime dt = DateTime.ParseExact(input, format, null, DateTimeStyles.AssumeLocal);

但是,您需要注意 DateTime 实例不包含时区信息,因此结果将被假定为本地时间(这就是我在 ParseExact 调用中明确声明的原因),并且 'PST' 无论如何都不会被识别为时区,即使您使用 DateTimeOffset 类型(确实包含时区详细信息)