跨语言/跨平台日期和时间转移

时间:2010-09-16 09:52:44

标签: date time cross-platform

跨越日期和时间的最佳方式是什么?我在客户端/浏览器端使用GWT,在服务器上使用.NET C Sharp,我使用JSON作为数据交换格式。我目前将所有日期和时间存储在服务器上作为.NET DateTime。现在我注意到,如果我使用GWT DatePicker或DateBox来选择日期并将其作为毫秒(通过执行date.getTime())发送到服务器,其中服务器将此参数作为DateTime,我可以看到一小时的偏移由于BST。在某些情况下,我必须在UI上的单独框中设置日期和时间,因为时间安排,时间设置和正确的日期至关重要。

2 个答案:

答案 0 :(得分:3)

交换日期和时间值的最佳方法是将它们序列化为与文化无关的基于UTC的字符串,如:2010-09-18T18:37:11。问题是,日期和时间相关的操作往往不正确地实现......

至于你的问题,我认为它在JSON时间的反序列化期间弹出,即.Net将此时间视为本地(DateTimeKind.Local或DateTimeKind.Unspecified),从而转换它。不知道如何处理它,蛮力可能会像上面那样发送序列化字符串并手动反序列化:

DateTime date = DateTime.Parse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);

答案 1 :(得分:1)

我建议使用ISO 8601等标准以字符串形式传输日期时间信息。在我的公司,在JSON对象中编码的日期时间信息几乎总是采用这种格式,例如" 2015-10-12T18:41:11 + 01:00&#34 ;.在具有不同编程语言(Obj-C,Java,C / C ++)的所有客户端中,可以正确地解析和理解该字符串。