我的计算机上安装了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");
或者,是否有任何替代方案,以便我可以更改尽管系统日期时间一直有效的代码。
答案 0 :(得分:4)
使用格式"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);
答案 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);
应该有所帮助。