系统日期时间格式已更改

时间:2012-09-07 06:22:15

标签: c# windows-7 datetime-format

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

 DateTime startDate = Convert.ToDateTime(start);

其中,

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

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

3 个答案:

答案 0 :(得分:4)

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

DateTime.ParseExact
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);

答案 1 :(得分:1)

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

使用ParseExact恢复数据。

答案 2 :(得分:0)

正如Habib已经回答:

//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);

应该有所帮助。