1

我编写了这段代码来记录我网站上的用户 IP 和时间。它有效,但时间有问题:

public static void UserLogin(string iPaddress, string uname)
{
    DateTime dt = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now);
    string cet= dt.AddHours(1).ToString("F", new CultureInfo("en-US"));
    .....

}

该网站位于英国某处的服务器上,为了将登录时间调整为 CET 而不会太复杂,我只是简单地使用 (AddHours) 添加小时差异,但出于某种原因,我不明白为什么,无论我输入什么数字永远不会添加“AddHours(1)”,而且,现在在我在意大利的位置是 13:55,即使没有添加时间,该方法的时间记录器也是凌晨 1:55,即晚 12 小时“加时(0)”。一些有助于理解此方法中发生的事情将不胜感激。谢谢。

4

1 回答 1

1

您可以以更可控的方式在时区之间转换时间,例如:

DateTime nowutc = DateTime.UtcNow;
var cet = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
var nowcet = TimeZoneInfo.ConvertTimeFromUtc(nowutc, cet);
于 2013-11-11T13:23:27.073 回答