2013-08-19 54 views
-1

我從api中提取數據,我得到這個值"Fri Aug 16 21:06:52 +0000 2013"我想知道我將如何能夠更改此字符串值鍵入日期時間轉換字符串唯一的日期輸出類型日期時間在c#

+1

它被稱爲解析,嘗試使用Google搜索它。 「DateTime.Parse」或「TryParse」或「TryParseExact」可能是有用的。 – wudzik

+0

有很多關於它的文章。 請參閱http://stackoverflow.com/questions/16978359/c-sharp-to-convert-string-to-datetime/16978561#16978561 – reNNN

回答

1

您可以使用DateTime.ParseExact

DateTime.ParseExact("Aug 16 21:06:52 +0000 2013", "MMM dd HH:mm:ss +ffff yyyy", 
System.Globalization.CultureInfo.InvariantCulture); 
+2

'「ffff」'爲小數秒,但在他的字符串中的時區給出。所以在技術上''「ffff」'是錯誤的(儘管它有效)。 –

0

有幾種方法......如果解析失敗

DateTime.TryParse

DateTime dt; 
if (DateTime.TryParse("Aug 16 21:06:52 +0000 2013", out dt)) 
{ 
    //parsing was successfull 
} 

這不會拋出異常。

再有就是DateTime.Parse:

DateTime dt = DateTime.Parse("Aug 16 21:06:52 +0000 2013"); 

不像TryParse,如果解析失敗,這將引發異常。

而且也有,Convert.ToDateTime:

DateTime dt = Convert.ToDateTime("Aug 16 21:06:52 +0000 2013", culture); 

如果轉換失敗這也引發錯誤。

1

您應該閱讀DateTime custom formats

這應該解決您的問題thougf它

DateTime result = DateTime.ParseExact("Aug 16 21:06:52 +0000 2013", "MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture); 

,或者更恰當地做到這一點,避免例外。像這樣做

//zzz is Hours and minutes offset from UTC 
string[] formats = { "MMM dd HH:mm:ss zzz yyyy" }; 
DateTime result; 
string date = "Aug 16 21:06:52 +0000 2013"; 
if (DateTime.TryParseExact(date, formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out result)) 
{ 
    // i prefer this method though 
} 
+0

感謝那 – user2674590

+0

_「ffff」是用於小數秒,但在他的字符串中給出時區。所以從技術上講,「ffff」是錯誤的(儘管它有效)_(從Jeppe對[Adil的回答](http://stackoverflow.com/a/18311573/284240)的評論中複製而來)。 –

+0

同意並更新。 – Ehsan

1

使用DateTime.ParseExact或者(如果輸入的可能是無效的)DateTime.TryParseExact

string input = "Aug 16 21:06:52 +0000 2013"; 
DateTime output; 
if (DateTime.TryParseExact(input, "MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out output)) 
{ 
    // date was parsable, here is it: 
    Console.WriteLine(output.ToLongDateString()); 
} 

Custom Date and Time Format Strings,尤其是"zzz" Custom Format Specifier

+0

@xanatos:完成:) –

0

你更新你的問題後編輯。

如果你想讓它轉換爲本地時區,使用方法:

var dateTime = DateTime.ParseExact("Fri Aug 16 21:06:52 +0000 2013", 
    "ddd MMM dd HH:mm:ss zzz yyyy", 
    CultureInfo.InvariantCulture); 

否則,使用:

var dateTime = DateTime.ParseExact("Fri Aug 16 21:06:52 +0000 2013", 
    "ddd MMM dd HH:mm:ss zzz yyyy", 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.AdjustToUniversal); 

如果+0000總是這樣在輸入,並要完全忽視這一點,請使用:

var dateTime = DateTime.ParseExact("Fri Aug 16 21:06:52 +0000 2013", 
    "ddd MMM dd HH:mm:ss +0000 yyyy", 
    CultureInfo.InvariantCulture); 
相關問題