最近、私が経験していた時間の問題についていくつか質問をしましたが、SO メンバーから良い助けを得ました。しかし、まだ解決できない問題があります。私のウェブサイトのホームページにこのスニペットがあります:
private string Datetime()
{
DateTime nowutc = DateTime.UtcNow;
var cet = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
var nowcet = TimeZoneInfo.ConvertTimeFromUtc(nowutc, cet);
return nowcet.ToString("F");
}
そしてそれはうまくいきます。ラベルに表示されている正しい時刻を取得します。
ログインページのこのメソッドには基本的に同じコードがありますが、データベース (nowcet) に正しい時刻が返されません。
public static void UserLogin(string iPaddress, string uname)
{
DateTime nowutc = DateTime.UtcNow;
var cet = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
var nowcet = TimeZoneInfo.ConvertTimeFromUtc(nowutc, cet);
const int MaxLength = 46;
if (uname.Length > MaxLength)
uname = uname.Substring(0, MaxLength);
string getconnstring = ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;
SqlConnection conn = new SqlConnection(getconnstring);
conn.Open();
string ssql = "insert into Logins (IP, uname, dateTime) values ('" +
iPaddress + "','" +
uname + "','" +
nowcet.ToString() + "')";//HERE IS WHERE I WRITE THE TIME TO THE DB
SqlCommand cmd = new SqlCommand(ssql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
私が得る違いはちょうど3時間です。ラベルが午後 4 時 30 分を示している場合、データベースは午後 7 時 30 分に保存されます。この問題は本番サーバー (共有ホスティング) でのみ発生し、私のマシンではローカルでは発生しません。なぜこのようなことが起こっているのかわかりません。ヒントはありますか?