2012-10-20 159 views
2

我在格式dd-MMM-yyyy日期字符串,並希望將其轉換爲datetime,當我使用下面的代碼轉換日期字符串到日期時間

DateTime.ParseExact("20-Oct-2012", "yyyy-MM-dd HH:mm tt", null) 

它導致錯誤

字符串未被識別作爲有效的日期時間。

當我修改上面的代碼

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null) 

然後我得到了在格式(mm/dd/yyyy)日期時間:10/20/2012 12:00:00 AM

但是我需要它應該在yyyy/mm/dd格式轉換。在這方面請幫助我。

+0

什麼是您的語言環境? – Steve

+1

歡迎來到StackOverflow:如果您發佈代碼,XML或數據樣本,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼樣本」按鈕(「{}」)語法突出它! –

+0

我的需求是日期時間變量,其格式爲「yyyy/MM/dd」 當我使用下面的代碼時 DateTime ConvertedDate = DateTime.ParseExact(「2012年10月20日」,「dd-MMM-yyyy」,null); 轉換日期包含值「10/20/2012 12:00:00 AM」 但我需要ParsExact方法應該以不同的格式轉換2010/10/20 12:00:00 AM –

回答

6

你應該試試這個

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null).ToString("yyyy/mm/dd") 

有關格式另閱讀Check This

+1

對不起,上面的代碼會將其轉換爲字符串,但我需要在datetime數據類型中將其轉換爲格式爲yyyy-mm-dd –

+1

我的要求是日期時間變量,其格式爲「yyyy/MM/dd」,日期格式爲 當我使用以下代碼 DateTime ConvertedDate = DateTime.ParseExact(「2012年10月20日」,「dd-MMM-yyyy」,null); 轉換日期包含值「10/20/2012 12:00:00 AM」。 但我需要ParsExact方法應該在不同的格式轉換2010/10/20 12:00:00 AM –

0

你需要兩個獨立的問題之間進行區分:在解析您的原始字符串轉換成抽象DateTime表示,而轉換的後者回到另一個字符串表示。

在您的代碼中,您只處理前者,並依靠隱含的ToString()方法調用(使用系統的當前語言環境)將其轉換回字符串。如果你想控制的輸出格式,你需要明確指定:

// Convert from string in "dd-MMM-yyyy" format to DateTime. 
DateTime dt = DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null); 

// Convert from DateTime to string in "yyyy/MM/dd" format. 
string str = dt.ToString("yyyy/MM/dd"); 

還要注意的是mm格式說明代表分鐘;月份由MM表示。

編輯:'Converted date contain value「2012年10月20日中午12:00:00」。「小心你的意思。構造的DateTime值包含解析日期和時間的抽象表示,它是任何格式的獨立的

但是,爲了顯示它,您需要將其轉換回一些字符串表示形式。當您在調試器中查看變量時(正如您大概所做的那樣),Visual Studio會自動調用DateTime上的無參數ToString()方法,該方法在當前文化下呈現日期和時間(在您的情況下,它假定爲美國文化)。

要改變這種行爲,使得它在自定義格式下呈現日期和時間,您需要顯式調用ToString(string)重載(或其他重載之一),正如我在上面的示例中所示。

+0

我的要求是包含日期格式「YYYY/MM/DD」日期時間可變 當我用下面的代碼 日期時間ConvertedDate = DateTime.ParseExact(「2012年10月20日」,「dd-MMM-yyyy」,null); 轉換日期包含值「10/20/2012 12:00:00 AM」。 但我需要ParsExact方法應以不同的格式轉換2010/10/20 12:00:00 AM –

+0

@VinodChakote:請參閱上面的編輯以獲得擴展說明。 – Douglas

+0

嗨道格拉斯,感謝您的回覆,我的問題是當我使用DateTime.ParseExact然後返回日期時間值是在「mm/dd/yyyy」格式,也是當我使用convert.toDatetime時,則值是在「mm/dd/yyyy 「格式。但我需要這樣的方法,它返回格式爲「yyyy/mm/dd」格式的DateTime數據類型的值。 –

0

你可以代替試試這個:

Convert.ToDateTime("20-Oct-2012").ToString("yyyy/MM/dd") 

希望這將幫助!

+0

當我使用下面的代碼時,我的要求是datetime變量包含格式爲「yyyy/MM/dd」的日期DateTime ConvertedDate = DateTime.ParseExact(「2012年10月20日」,「dd-MMM-yyyy」,null);轉換日期包含值「2012年10月20日12:00:00」。但我需要ParsExact方法應該以不同的格式轉換2010/10/20 12:00:00 AM –

+0

@VinodChakote,你需要以** dd-MMM-yyyy **格式獲取日期嗎? –

相關問題