我最近已经就我遇到的时间问题提出了一些问题,并且我从 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 pm,则 db 存储 7:30 pm。此问题仅发生在生产服务器(共享主机)上,在我的机器上本地不会发生。我不明白为什么会发生这样的事情。有什么提示吗?