0

我想在会话(date1)中添加一个日期,如下所示:

Session["DateLesson"] = date1.ToString("dd.MM.yyyy");

现在从会话中我想取这个值:

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

它给了我这个例外:

FormatException 未被识别为有效的 DateTime

4

4 回答 4

4

在大多数语言环境中,句点不是有效/标准的分隔符。您需要结合使用 DateTime.ParseExact() 和格式字符串来告诉函数如何读取它。更重要的是,如果将它读回日期时间是您的主要目标,为什么不直接将日期时间放在会话中呢?对我来说,这似乎更有效、更容易、更易于维护。

于 2012-04-20T13:37:44.640 回答
1

为什么将您的日期保留为字符串?

您可以像这样简单地存储它:

Session["DateLesson"] = date1;

然后像这样检索它:

var datelesson = (DateTime)Session["DateLesson"];
于 2012-04-20T13:38:20.673 回答
1
string value = "20.04.2012";
DateTime datetime = DateTime.ParseExact(value, "dd.MM.yyyy", null);

这将返回4/20/2012 12:00:00:00 AM

于 2012-04-20T13:40:09.757 回答
0

不要将值保留为字符串,而是作为初始类型的对象:

public DateTime? DateLesson
{
    get
    {
        DateTime? dateTime = Session["DateLesson"] as DateTime?;
        if (dateTime.HasValue) // not null
        {
            // use dateTime.Value
        }
    }
    set
    {
        Session["DateLesson"] = value;
    }
}
于 2012-04-20T13:39:40.843 回答