我在将日期时间的会话值转换为正确格式时遇到了一些问题。
当我使用时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 lastlogged = Convert.ToDateTime(Session["LastLogin"]);
,我得到值 {1/1/0001 12:00:00 AM} (在调试时得到值)但实际值为
Session["LastLogin"]
2011-08-02 16:35:52.987 ,这是从 SQLServer 2008 中查询出来的数据字段日期时间
您的结果是DateTime.MinValue
(01/01/0001 午夜)。
如果 Session 中的值为null
- 这是最可能的解释,您将得到此结果。
正如其他人已经建议的那样,您可以使用 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"];
DateTime lastlogged = DateTime.Parse(Session["LastLogin"].ToString());
如果您在 Session 中正确存储该值,则可以通过将其转换为 DateTime 来检索它。
DateTime lastlogged = Convert.ToDateTime(Session["LastLogin"].ToString());