在C#.net中转换日期时间

时间:2012-08-02 09:17:18

标签: c# asp.net sql-server-2008

我在将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查询的

4 个答案:

答案 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"];