【发布时间】:2015-12-22 14:05:30
【问题描述】:
我在获取正确时区的日期时遇到问题。
首先在本地机器上,一切正常,但在服务器上却不行:服务器托管在美国,客户大多在澳大利亚。
因此,日期从 Angular 应用程序(“12/23/2015 11:00:00 AM”)发送到服务器,服务器将日期作为 utc 存储在数据库中,直到此时一切正常(我检查了并且日期存储在正确的UTC中)
book.StartDateTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.SpecifyKind(book.StartDateTime.Value, DateTimeKind.Unspecified), ToolsHelper.OlsonTimeZoneToTimeZoneInfo(locationDetails.TimeZone)); // book.CreatedDate.Value.ToUniversalTime();
问题是:
当客户端请求一些存储在数据库中的日期时。存储在数据库中的日期是这样返回给客户端的:
bookview.StartDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.SpecifyKind(bookli.StartDateTime.Value, DateTimeKind.Utc), ToolsHelper.OlsonTimeZoneToTimeZoneInfo(deCompany.TimeZone));
我检查了一下,此时日期是“12/23/2015 11:00:00 AM”-> 转换就在服务器中(在服务器端我放了一个日志),
但在角度显示为“12/23/2015 10:00:00 PM”
所以显然问题是 api 将日期传输到客户端的时间,可能是转换为 JSON 的时间
我尝试了不同的方法,但没有任何效果,我删除了“DateTime.SpecifyKind”,我将日期转换为字符串,然后再转换回日期时间格式,但似乎没有任何效果。
我能做什么?
【问题讨论】:
标签: angularjs date asp.net-web-api timezone utc