我试图使用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
答案 0 :(得分:4)
当前的区域设置问题(或更具体地说是星期/月翻译日):
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"))
答案 1 :(得分:0)
目前,您的示例代码不会编译,因为转义字符' \'本身需要逃脱。或者,您可以在格式字符串前加上' @'使它成为文字。
以下作品;
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类型(它确实包含TimeZone细节)