2013-04-24 207 views
1

你好有沒有辦法將這個字符串「星期六04/23/2013 11:05 PM」轉換爲有效的日期時間格式?轉換爲日期時間格式

因爲它給了我FormatExceptionError每次我執行這個條件:

字符串未被識別爲有效的DateTime,因爲一週中的一天是不正確的。

if(DateTime.Parse("Saturday 04/23/2013 11:05 PM") < DateTime.Today) 
{ 
//code here 
} 

是否有一個解決這個問題?

+0

很難無效值轉換爲有效的一個。你可以做字符串操作......你能簡單地拒絕無效值嗎? – 2013-04-24 02:37:53

+0

@AlexeiLevenkov:當我們給出格式時,爲什麼解析確實不起作用。 – 2013-04-24 02:38:35

+0

爲什麼有人把每個人都獻給-1?你願意解釋嗎? – Harrison 2013-04-24 02:48:58

回答

4

使用DateTime.ParseExact()

string _strdate = "Tuesday 04/23/2013 11:05 PM"; // should be tuesday 
DateTime _date = DateTime.ParseExact(_strdate,"dddd MM/dd/yyyy hh:mm tt", 
            CultureInfo.InvariantCulture) 

enter image description here

+0

-1。按照OP的說法給出相同的錯誤。 – 2013-04-24 02:36:39

+0

刪除-1 ...現在它也有點作弊 - 解析將處理有效的日期就好... OP要求無效的日期出於某種原因:) – 2013-04-24 02:51:27

+0

是的。應該是星期二。對不起,我忘了更改dddd。 xD – 2013-04-24 03:18:40

0

字符串是由於周的當天不正確,因此未將其識別爲有效的DateTime

04/23/2013是星期二,不是星期六。

也許當你的日期時間語句是矛盾時會發生異常。

希望它可以幫助...

+0

哈哈哈。對不起。 :) – 2013-04-24 03:09:56

+0

那麼,爲什麼我得到-1票?我們試圖給你解決方案...:\ – user151465464 2013-04-24 03:53:52

+0

我沒有-1投票給你,先生。 – 2013-04-27 02:58:47

0

的日期和星期不匹配。 2013年4月23日是星期二,而不是星期六。在沒有任何世界的日曆中,你將在星期六擁有這一天。這就是爲什麼它給出錯誤的原因String was not recognized as a valid DateTime because the day of week was incorrect.

所以可能會它轉換你的日期,然後驗證。因此它在驗證中失敗。

但是,當提供星期二時,這將起作用。

string str = "Tuesday 04/23/2013 11:05 PM"; 

DateTime dt = DateTime.ParseExact(str, "dddd MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture); 

enter image description here

+0

嘿,爲什麼-1。它有什麼問題? – 2013-04-24 02:43:22

+0

哈哈哈。對不起!這幫助我追蹤了這個問題。 :) – 2013-04-24 02:52:53

1

如果你希望無效數據,你應該使用TryParseTryParseExact

DateTime myDate; 
if(DateTime.TryParse("Saturday 04/23/2013 11:05 PM", out myDate)) 
{ 
    if (myDate < DateTime.Today) { //code here } 
} 
else 
{ 
    //Do something here for invalid data 
}