2012-04-20 38 views
0

我想在會話(DATE1)添加日期如下:字符串未被識別爲有效的DateTime

Session["DateLesson"] = date1.ToString("dd.MM.yyyy"); 
從我想借此值會話

現在:

var asd = Session["DateLesson"]; 
/*asd = "20.04.2012"*/ 
var datelesson = DateTime.Parse((string) asd); 

而且它給了我這個異常:無法識別爲有效的DateTime

出現FormatException

回答

1

爲什麼要將日期保存爲字符串?

你可以簡單地將其存儲這樣的:

Session["DateLesson"] = date1; 

,然後檢索它像這樣:

var datelesson = (DateTime)Session["DateLesson"]; 
+0

我需要它在dd.mm.yyyy格式 – Alex 2012-04-20 13:55:58

4

在大多數語言環境中,句點不是有效/標準分隔符。您需要結合使用DateTime.ParseExact()和格式字符串來告訴函數如何讀取它。更重要的是,如果將它讀回日期時間是您的主要目標,那麼爲什麼不把日期時間放在會話中呢?這似乎方式更有效,更容易,更可維護我。

+0

這是不完全正確的。期間*是某些地區的標準分隔符(例如,俄羅斯)。無論使用Parse還是ParseExact,OP都將從使用接受「IFormatProvider」參數的重載中受益。 – phoog 2012-04-20 13:42:58

+0

@phoog - 添加了一些黃鼠狼的單詞。快樂? – 2012-04-20 13:49:11

0

不要讓值作爲一個字符串,但作爲初始類型的對象:

public DateTime? DateLesson 
{ 
    get 
    { 
     DateTime? dateTime = Session["DateLesson"] as DateTime?; 
     if (dateTime.HasValue) // not null 
     { 
      // use dateTime.Value 
     } 
    } 
    set 
    { 
     Session["DateLesson"] = value; 
    } 
} 
+0

downote,***的原因是什麼? – abatishchev 2012-05-01 10:54:33

+0

不知道 - 考慮到問題中的細節,這似乎是一個合理的解決方案,所以我反駁了這個問題。 – 2013-04-09 10:25:33

1
string value = "20.04.2012"; 
DateTime datetime = DateTime.ParseExact(value, "dd.MM.yyyy", null); 

這將返回4/20/2012 12:00:00:00 AM

+0

string value = Session [「DateLesson」]。ToString(); DateTime date = DateTime.ParseExact(value,「dd.MM.yyyy」,null);字符串未被識別爲有效的日期時間。 – Alex 2012-04-20 14:17:46

相關問題