我想在会话(date1)中添加一个日期,如下所示:
Session["DateLesson"] = date1.ToString("dd.MM.yyyy");
现在从会话中我想取这个值:
var asd = Session["DateLesson"];
/*asd = "20.04.2012"*/
var datelesson = DateTime.Parse((string) asd);
它给了我这个例外:
FormatException 未被识别为有效的 DateTime
我想在会话(date1)中添加一个日期,如下所示:
Session["DateLesson"] = date1.ToString("dd.MM.yyyy");
现在从会话中我想取这个值:
var asd = Session["DateLesson"];
/*asd = "20.04.2012"*/
var datelesson = DateTime.Parse((string) asd);
它给了我这个例外:
FormatException 未被识别为有效的 DateTime
在大多数语言环境中,句点不是有效/标准的分隔符。您需要结合使用 DateTime.ParseExact() 和格式字符串来告诉函数如何读取它。更重要的是,如果将它读回日期时间是您的主要目标,为什么不直接将日期时间放在会话中呢?对我来说,这似乎更有效、更容易、更易于维护。
为什么将您的日期保留为字符串?
您可以像这样简单地存储它:
Session["DateLesson"] = date1;
然后像这样检索它:
var datelesson = (DateTime)Session["DateLesson"];
string value = "20.04.2012";
DateTime datetime = DateTime.ParseExact(value, "dd.MM.yyyy", null);
这将返回4/20/2012 12:00:00:00 AM
不要将值保留为字符串,而是作为初始类型的对象:
public DateTime? DateLesson
{
get
{
DateTime? dateTime = Session["DateLesson"] as DateTime?;
if (dateTime.HasValue) // not null
{
// use dateTime.Value
}
}
set
{
Session["DateLesson"] = value;
}
}