我需要使用C#字符串到SqlDateTime:如何設置識別格式?
SqlDateTime.Parse(val)
其中val是一個字符串,如 「1992年3月23日00:00:00」。
該字符串採用歐洲格式,即日期在月份之前。但Parse希望「美國」格式。我如何告訴它使用特定的日期時間格式/區域設置?
在此先感謝!
我需要使用C#字符串到SqlDateTime:如何設置識別格式?
SqlDateTime.Parse(val)
其中val是一個字符串,如 「1992年3月23日00:00:00」。
該字符串採用歐洲格式,即日期在月份之前。但Parse希望「美國」格式。我如何告訴它使用特定的日期時間格式/區域設置?
在此先感謝!
試試這個:
string val = "23.12.1992 00:00:00";
// Parse exactly from your input string to the native date format.
DateTime dt = DateTime.ParseExact(val, "dd.M.yyyy hh:mm:ss", null);
// Part to SqlDateTime then
System.Data.SqlTypes.SqlDateTime dtSql = System.Data.SqlTypes.SqlDateTime.Parse(dt.ToString("yyyy/MM/dd"));
這可能在一個語句來完成,但爲了說明而分開。
你可以試試嗎?
string valInEuropean = "23.3.1992 00:00:00";
DateTime dateInEuropean = DateTime.Parse(valInEuropean);
string valInAmerican = dateInEuropean.ToString("yyyy-MM-dd HH:mm:ww");
這隻有在他的文化已被設置爲歐洲時纔有效,否則DateTime.Parse調用將失敗。 – Chris
euhh是的,但它確實與否? –
當格式被稱爲將字符串轉換爲DateTime對象(在這種情況下) 使用
DateTime dwweek = DateTime.ParseExact("23.3.1992 00:00:00", "dd.MM.yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
你有沒有嘗試過的DateTime,而不是SQLDATETIME
DateTime d = DateTime.Parse(val);
String s = d.ToString(CultureInfo.CreateSpecificCulture("en-US"));
你沒有'DateTime'實例中傳遞到數據庫?爲什麼要使用字符串呢? – Oded
爲什麼不使用像'YYYY-MM-dd HH:mm:ss'這樣''2013-05-29 13:38:00'完全不帶聲望的東西,那麼一切都會知道它的含義。 – Belogix
SqlDateTime使用InvariantCulture。當你需要不同的東西時,使用DateTime和Parse重載,你可以提供不同的文化或格式。然後使用帶有DateTime的SqlDateTime構造函數。如果可能的話,像其他的一樣,如果需要的話,儘量使用獨立於文化的字符串格式 – Ralf