0

我的电脑上安装了 Window 7。问题是如果计算机重新启动,系统日期格式会在一段时间内更改。我需要固定日期格式,但不知道如何。我在 mvc 3 中构建了应用程序,并且有用于字符串到日期时间转换的代码。如果系统日期时间格式与字符串不匹配,则会显示 string is not in proper format转换为查找系统日期时间的日期时间的错误。异常在以下代码中引发:

 DateTime startDate = Convert.ToDateTime(start);

在哪里,

string start = sundayOfLastWeek.ToString("MM/dd/yyyy HH:mm:ss");

或者,是否有任何替代方案,以便我可以更改始终有效的代码,尽管系统日期时间。

4

3 回答 3

4

使用DateTime.ParseExact格式"MM/dd/yyyy HH:mm:ss"

startDate = DateTime.ParseExact(start, 
                                "MM/dd/yyyy HH:mm:ss",
                                CultureInfo.InvariantCulture);

编辑:基于@John Woo 的评论

您可以将字符串数组传递给 DateTime.Parse,例如:

string[] dateFormats = new string[] { "MM/dd/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "d/MM/yyyy" };
DateTime startDate = DateTime.ParseExact(start,
                                         dateFormats, 
                                         CultureInfo.InvariantCulture,
                                         DateTimeStyles.None);
于 2012-09-07T06:23:57.427 回答
1

使用 .ToString(CultureInfo.InvariantCulture) 和 Parse(value, CultureInfo.InvariantCulture) 来保持值。如果您出于显示目的呈现值,则仅省略 CultureInfo。对于某些特定的数据格式,可能存在特殊的格式规则 - 遵循它们。

要恢复您的数据,请使用 ParseExact。

于 2012-09-07T06:29:08.400 回答
0

正如哈比卜已经回答的那样:

//Add any format you want or expect
string[] formats = { "MM/dd/yyyy HH:mm:ss", "dd.MM.yyyy HH:mm:ss" };
DateTime startDate = DateTime.ParseExact(start, formats,
                System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);

它应该有帮助。

于 2012-09-07T06:31:44.440 回答