在我的服务器上转换为UTC时间不起作用

时间:2013-03-11 22:28:46

标签: c# datetime

我正在我的应用程序中将用户提交的日期时间转换为utc:

TimeZoneInfo.ConvertTimeToUtc(DateTime.Parse(model.SessionEnd))

我也试过这样的事情

combinedDateTime = DateTime.SpecifyKind(combinedDateTime, DateTimeKind.Utc);

当我在计算机上运行Web应用程序时,

都可以正常工作。只要我将它上传到服务器并从那里尝试它就不会转换时间并最终返回我输入的相同日期时间。我确信我的类库正在使用最新版本正确加载,因为我已经检查过我的调试语句是否也在更新。这是服务器设置还是我可以做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:2)

唯一合理的方法是使客户端代码使用时区提交时间/日期时间值。通常在客户端上转换为UTC是合理的并且也支持JavaScript(如果您仍然喜欢timzone - 请使用getTimeZoneOffset)。我建议将UTC(Z)时区格式化为ISO8601的日期时间值作为众所周知的可排序格式发布,对于相同的字符串没有多重含义(2013-03-11T03:52Z)。

请注意,有时候你需要明确没有时区的时间(比如我早上9点叫醒你) - 确保了解你的用例是什么。

答案 1 :(得分:1)

当您的客户将客户端的日期时间作为字符串发布时,您可以执行以下操作:

1。)您可以在客户端将他们的时间转换为UTC(如在Alexei Levenov的回答中)

2.。)您可以将客户端的时间传递给服务器并在服务器端转换他们的时区

3.。)您可以在客户端将他们的时间转换为UTC,并在服务器端发送他们的时区

根据您的需要,您可以选择其中任何一种。第三个只有在你想稍后在服务器端以某种方式使用它们的时区时才有用。