C#.net中日期时间的转换
我在将datetime的会话值转换为正确格式时遇到问题 当我使用C#.net中日期时间的转换,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我在将datetime的会话值转换为正确格式时遇到问题 当我使用DateTime lastlogged=Convert.ToDateTime(会话[“LastLogin]”)时我获取值{1/1/0001 12:00:00 AM}(在调试时获取值) 但它的实际价值 会话[“LastLogin”]是2011-08-02 16:35:52.987,它是从SQLServer 2008数据字段datetime中查询出来的如果您在会话中正确存储了该值,您可以通过将其转换为datetime来检索它 DateT
DateTime lastlogged=Convert.ToDateTime(会话[“LastLogin]”)时代码>我获取值{1/1/0001 12:00:00 AM}(在调试时获取值)
但它的实际价值
会话[“LastLogin”]
是2011-08-02 16:35:52.987,它是从SQLServer 2008数据字段datetime中查询出来的如果您在会话中正确存储了该值,您可以通过将其转换为datetime来检索它
DateTime lastlogged = DateTime.Parse(Session["LastLogin"].ToString());
DateTime lastlogged = Convert.ToDateTime(Session["LastLogin"].ToString());
您的结果是DateTime.MinValue
(0001年1月1日午夜)
如果会话中的值为null
,您将得到此结果-这是最可能的解释。正如其他人所建议的,您可以使用DateTime.Parse方法。但也许使用DateTime.TryParseExact会更好。通过这种方式,您可以定义日期时间的格式
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中的会话不是很熟悉,但是否也可以在其中存储整个对象?通过这种方式,还可以按原样存储日期时间,从而生成如下代码:
DateTime result = (DateTime) Session["LastLogin"];
为什么需要使用会话变量将日期前后转换为字符串?会话变量可以保存装箱对象中的日期值。Session[“LastLogin”]==null
(您希望false
)和Session[“LastLogin”].ToString()
(您希望该日期)的值是什么?这似乎是一个字符串解析问题。尝试使用DataTime.ParseExact(会话[“LastLogin”].ToString(),“yyyy-mm-dd hh:mm:ss”,CultureInfo.InvariantCulture)代码>不编译。我需要一个字符串。是的,你说得对。我忘记了orgot.ToString()方法。改变了答案。