我在将datetime的会话值转换为正确的格式时遇到了一些问题。
当我使用DateTime lastlogged = Convert.ToDateTime(Session["LastLogin"]);
时,我得到值{1/1/0001 12:00:00 AM}(在调试时得到值)
但实际价值
Session["LastLogin"]
是2011-08-02 16:35:52.987,它是从SQLServer 2008数据字段datetime查询的
答案 0 :(得分:2)
您的结果是DateTime.MinValue
(01年1月1日午夜)。
如果Session中的值为null
,您将得到此结果 - 这是最可能的解释。
答案 1 :(得分:0)
DateTime lastlogged = DateTime.Parse(Session["LastLogin"].ToString());
答案 2 :(得分:0)
如果在Session中正确存储值,则可以通过将其转换为DateTime来检索它。
DateTime lastlogged = Convert.ToDateTime(Session["LastLogin"].ToString());
答案 3 :(得分:0)
正如其他人已经建议的那样,您可以使用DateTime.Parse方法。但也许使用DateTime.TryParseExact会更好。这样您就可以定义DateTime的格式
DateTime lastLogin;
if (Session["LastLogin"] != null && DateTime.TryParseExact(Session["LastLogin"].ToString(), "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out lastLogin))
{
// TODO: Code that uses the parsed date.
}
我对ASP.net中的Session不是很熟悉,但它是否也可以将整个对象存储在其中?这样也可以按原样存储DateTime,从而产生如下所示的代码:
DateTime result = (DateTime) Session["LastLogin"];