2012-11-02 218 views
-1

任何人都可以在格式化以下日期字符串格式的最佳方法建議...C#日期/時間格式

星期六,9月22日

的東西,我可以在SQL存儲服務器作爲一個日期/時間......使用格式

YYYY/MM/DD

我可以在代碼中做到這一點,但我閱讀數百XML的提取不知道如何是st來解決這個問題。

+1

你怎麼知道它是'星期六,九月22'哪一年?假設今年是當前(2012年)? –

+0

是的,看到我對@ davehale23回答的評論。如果DOW與當年不符,您將收到錯誤信息。 – McArthey

+0

SQL Server支持我將使用的'DateTime'結構。 –

回答

3

您可以使用DateTime.Parse()有關信息,請參見here。雖然,你必須在那裏有一年的時間。

DateTime convertedDate = DateTime.Parse("Sat, Sep 22 2012"); 

編輯:

因爲我們不知道,如果你知道你正在處理的是哪一年,我建議你可以使用這樣的:

Int32 thisYear = DateTime.Now.Year; 
string aDate = "Sat, Sep 22"; 
DateTime outDate; 
while (!DateTime.TryParse(aDate + " " + thisYear.ToString(), out outDate))   
    thisYear--; 

這將得到適合描述的最近一年的DateTime。如果您嘗試使用「週五,9月22日」的aDate,則結果將爲「9/22/2006」。

或者,如果你只是想用「今年」你可以只使用這樣的:

String[] myDate = ("Fri, Sep 22").Split(','); 
DateTime convertedDate = DateTime.Parse(myDate[1].ToString()); 
+0

DateTime.Parse()不需要日期。它將採用海報提供的輸入並假設當前年份。 – McArthey

+0

我希望能夠「聰明地」確定基於星期幾的一年,但嘗試「星期六,9月24日」(這將是2011年)只是給出了錯誤:字符串未被識別爲有效的日期時間,因爲星期幾是不正確的。 – McArthey

+0

@McArthey,我剛剛在我的IDE中試過。你是對的!我每天都會學到新的東西。我不知道它會假設今年。 – davehale23

2
DateTime result; 
DateTime.TryParse("Sat, Sep 22", out result); 
Response.Write(result.ToString("yyyy/M/dd")); 

這不今年解析。在這種情況下,輸出是「2012/9/22」。

+0

試過這個,但給出了一個值,如'0001/1/01' – leeb898

+0

@ leeb898 - 用新信息更新你的問題。 –

+0

從http://msdn.microsoft.com/en-us/library/ch92fbc1(v=vs.90).aspx。當此方法返回時,如果轉換成功,則包含等同於s中包含的日期和時間的DateTime值,如果轉換失敗,則包含DateTime.MinValue。如果s參數爲空,則該轉換失敗,是空字符串(「」),或者不包含日期和時間的有效字符串表示形式。 – McArthey

1

SQL Server支持一些特定的日期格式。您可以使用yyyy-MM-dd格式。請檢查以下代碼:

string dt = DateTime.Now.ToString("yyyy-MM-dd"); 

您不應該擔心日期如何存儲。您可以以任何您想要的格式顯示日期,並且可以在SQL Server和.Net中完成。

see reference