[英]Convert.ToDateTime() error
嘗試將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);
這導致:
字符串未被識別為有效的 DateTime。
我在安裝 Windows 10 和 Visual Studio 2015 之前從未遇到過這個問題,我之前的設置是 Windows 7 和 Visual Studio 2013。奇怪的是,這也會導致同樣的錯誤:
DateTime d = Convert.ToDateTime(DateTime.Now.ToUniversalTime().ToString());
這在我以前的設置中確實工作得很好,有什么想法為什么它不再工作了嗎?
編輯:我確實相信這個問題不是 Thomas Weller 鏈接到的將字符串轉換為日期時間的問題的重復。 因為此問題是預期行為變化的結果,請參閱第二個示例。 我也確實找到了解決方法,但這並不實用:
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 的 Convert.DateTime 也將使用當前文化(在 MSDN 上查看這些參考資料)。
我的最后一個建議是,您可以執行以下操作,而不是進行替換:
string s = DateTime.Now.ToUniversalTime().ToString("dd/MM/yyyy HH:mm:ss");
我在控制台應用程序中嘗試了以下代碼,它對我有用。 並在此處檢查 .NETFiddle
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 objcul = new CultureInfo("en-GB");
DateTime.ParseExact(ValidFrom.Text,"dd/MM/yyyy", objcul);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.