Convert.ToDateTime() error
本文关键字:error ToDateTime Convert | 更新日期: 2023-09-27 18:13:49
尝试将string
转换为DateTime
时出现错误,尽管这以前一直有效。
将日期时间保存为文本文件,如下所示:
DateTime.Now.ToUniversalTime().ToString(); //results in something like this 20.9.2015 10.16.12
应用程序加载:
string s = streamReader.ReadLine(); //the saved string s = "20.09.2015 10.16.12" DateTime d = Convert.ToDateTime(s);
结果如下:
字符串未被识别为有效的日期时间。
在我安装Windows 10和Visual Studio 2015之前,我从未遇到过这个问题,我之前的安装是Windows 7和Visual Studio 2013。奇怪的是,这也会导致相同的错误:
DateTime d = Convert.ToDateTime(DateTime.Now.ToUniversalTime().ToString());
这在我以前的设置中确实工作得很好,任何想法为什么它不再工作?
编辑:我相信这个问题不是问题的副本转换字符串到日期时间,托马斯韦勒链接到。由于此问题是预期行为变化的结果,请参见第二个示例。我也找到了一个修复这个,但它是不实际的:
string s = DateTime.Now.ToUniversalTime().ToString();
s = s.Substring(0, s.IndexOf(" ")).Replace('.', '/') + s.Substring(s.IndexOf(" ")).Replace('.', ':');
DateTime d = Convert.ToDateTime(s);
由于控制面板上的区域设置,这可能不再工作。
为避免与目标环境中的区域设置冲突,请使用DateTime。TryParseExact:
string s = streamReader.ReadLine(); //the saved string s = "20.09.2015 10.16.12"
DateTime d = DateTime.Now;
DateTime.TryParseExact(s, "dd.MM.yyyy HH.mm.ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out d);
同样,如果这是你的默认格式,并且你需要在整个应用程序中使用这种格式,你可以在你的配置文件中设置默认区域性。
这个代码:Convert.ToDateTime(DateTime.Now.ToUniversalTime().ToString())
如果DateTime.ToString()和Convert.ToDateTime()在没有格式提供程序的情况下使用相同的DateTimeFormatInfo,那么应该可以在任何环境下工作,除非您在这些调用之间更改了您的文化。请注意,没有格式说明符的DateTime.ToString()将使用基于当前区域性的通用日期/时间模式(G)。和转换。没有FormatProvider的DateTime也将使用当前区域性(在MSDN上检查这些引用)。
我的最后一个建议是,你可以这样做,而不是做替换,
string s = DateTime.Now.ToUniversalTime().ToString("dd/MM/yyyy HH:mm:ss");
我试着在控制台应用程序中遵循代码,它对我有效。点击这里的。net fiddle
string s = "20.09.2015 10.16.12";
DateTime d;
bool isValid = DateTime.TryParseExact(s, "dd.MM.yyyy HH.mm.ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out d);
试着理解TryParseExact是如何工作的。你可以在这里阅读TryParseExact
和格式。如果成功转换值,则返回true
,否则返回false
。
请尝试一下。
CultureInfo objl = new CultureInfo("en-GB");
DateTime.ParseExact (ValidFrom.Text"dd/MM/yyyy", objcul);