无法在 Windows Phone 7 中将字符串解析为 DateTime

本文关键字:字符串 DateTime Windows Phone | 更新日期: 2023-09-27 18:33:44

我正在尝试将string转换为DateTime。但我不能转换。

DateTime dt = DateTime.Parse("16/11/2014", CultureInfo.InvariantCulture);
Console.WriteLine("Date==> " + dt);

错误是 FormatException

我的输入时间格式是 "dd/MM/yyyy"

请让我有任何想法来解决我的问题。

无法在 Windows Phone 7 中将字符串解析为 DateTime

鉴于您知道输入格式,您应该使用"ParseExact"指定它:

DateTime dt = DateTime.ParseExact(text, "dd/MM/yyyy",
                                  CultureInfo.InvariantCulture);

我总是建议尽可能明确地说明日期/时间格式。它使您的意图非常明确,并避免了以错误的方式获得数月和日子的可能性。

正如Soner所说,CultureInfo.InvariantCulture使用MM/dd/yyyy作为其短日期模式,您可以通过以下方式进行验证:

Console.WriteLine(CultureInfo.InvariantCulture.DateTimeFormat.ShortDatePattern)

作为一个温和的插头,你可能要考虑使用我的Noda Time项目来处理你的日期/时间 - 除了其他任何事情,它允许你将日期视为日期,而不是日期和时间......

因为InvariantCulture没有dd/MM/yyyy作为标准日期和时间格式,但它MM/dd/yyyy作为标准日期和时间格式。

这就是为什么它认为您的字符串是MM/dd/yyyy格式,但由于公历中没有16月,因此您会得到FormatException.

取而代之的是,您可以使用DateTime.TryParseExact方法来指定确切的格式,例如;

string s = "16/11/2014";
DateTime dt;
if(DateTime.TryParseExact(s, "dd/MM/yyyy", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
}