0

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 からクエリされますデータ フィールド日時

4

4 に答える 4

2

結果はDateTime.MinValue(0001/01/01の深夜)です。

Sessionの値がnull-これが最も可能性の高い説明である場合、この結果が得られます。

于 2012-08-02T09:26:06.790 に答える
0
DateTime lastlogged = DateTime.Parse(Session["LastLogin"].ToString());
于 2012-08-02T09:20:41.120 に答える
0

値を Session に正しく格納すると、DateTime に変換して取得できます。

DateTime lastlogged = Convert.ToDateTime(Session["LastLogin"].ToString());
于 2012-08-02T09:21:57.897 に答える
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 のセッションにあまり詳しくありませんが、オブジェクト全体を格納することもできませんか? このようにして、DateTime をそのまま保存することもできるはずです。その結果、次のようなコードになります。

DateTime result = (DateTime) Session["LastLogin"];
于 2012-08-02T09:35:47.640 に答える