2016-12-02 85 views
0

我的系統時間格式爲dd-MMM-yy(02年12月2日)。我想將其轉換爲的格式是"yyyy/MM/dd"。我基本已經與所有我的系統提供的其他日期時間格式玩耍,這是解析的語句,我要指出的是所有這些工作(除了這) -將系統時間格式的DateTime對象格式化爲所需格式

CultureInfo provider = CultureInfo.InvariantCulture; 
string date_format = "yyyy/MM/dd HH:mm:ss tt"; 
DateTime now_value = DateTime.ParseExact(DateTime.Now.ToString(date_format), date_format, provider); 
return now_value.ToString(date_format); 

但是這並未」 t適用於上述dd-MMM-yy格式。有人能告訴我我在這裏做錯了嗎?

(邊欄-Is那裏,我可以這樣寫上面的代碼更有效的方式?)

+1

'now.ToString('是它還是'now_value.ToString(' –

+0

now_value。錯字。謝謝。 – wave5459

回答

2

您不必爲DateTime轉換爲字符串,然後轉換回日期時間,再次回到字符串,如果你有日期時間輸入只需調用的ToString的格式如下

string dt =DateTime.Now.ToString("yyyy/MMM/dd", CultureInfo.InvariantCulture); 

您例如:

DateTime now_value = DateTime.ParseExact("02-Dec-16", "dd-MMM-yy", System.Globalization.CultureInfo.InvariantCulture); 
return now_value.ToString("yyyy/MM/dd"); 
+0

我編輯了我所需的格式。但讓我試試這個編輯後的格式。 – wave5459

+0

你的例子中使用了什麼'provider'? – Damith

+0

提供者就像你所想象的那樣 - 「CultureInfo.InvariantCulture」。 – wave5459

1

試試這個:

string date_format = "yyyy-MMM-dd"; 
string date_now = DateTime.Now.ToString(date_format,CultureInfo.CreateSpecificCulture("en-US")); 
return date_now; 

即使這也應該工作:

string date_format = "yyyy-MMM-dd"; 
string date_now = DateTime.Now.ToString(date_format); 
return date_now; 
+0

我想避免一種特定的文化。因此我使用了InvariantCulture。感謝您的回答:) – wave5459

0

我認爲最好的辦法是創建多個日期格式的擴展方法,

var inputDate = "02-Dec-2016"; 
string[] availaible_input_date_format = { "dd-MMM-yyyy", "dd/MMM/yyyy" }; // add as many formats availible 
var date_format = "yyyy/MMM/dd"; 
DateTime outputDate; 
DateTime.TryParseExact(inputDate, availaible_input_date_format, null, DateTimeStyles.None, out outputDate); 
Console.WriteLine(outputDate.ToString(date_format)); 
0

你可以試試這個:

datetime yourdatetime = new datetime(); 
string converteddatetime = yourdatetime.toString("yyyy/MM/dd"); 
+0

這總是返回「0001-01-01」。 – wave5459

+0

它只是一個例子abhiii5459。 –

+0

只能使用字符串converteddatetime = yourdatetime.toString(「yyyy/MM/dd」); –