Date 跨语言/跨平台日期和时间传输

Date 跨语言/跨平台日期和时间传输,date,time,cross-platform,Date,Time,Cross Platform,传递日期和时间的最佳方式是什么。我在客户端/浏览器端使用GWT,在服务器端使用.NET C Sharp,并使用JSON作为数据交换格式。我目前正在将服务器上的所有日期和时间存储为.NET DateTime。现在我注意到,如果我使用GWT DatePicker或DateBox选择一个日期并将其作为毫秒发送到服务器(通过执行date.getTime()),服务器将此参数作为DateTime,由于BST,我可以看到一个小时的偏移。在某些情况下,我必须将日期和时间放在UI上的单独框中,时间设置以及正确的

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

交换日期和时间值的最佳方法是将它们序列化为独立于区域性的,基于UTC的字符串,如:2010-09-18T18:37:11。问题是,与日期和时间相关的操作往往无法正确执行

至于您的问题,我假设它在JSON时间的反序列化过程中弹出,即.Net将此时间视为本地时间(DateTimeKind.local或DateTimeKind.Unspecified),从而转换它。由于不确定如何处理,蛮力可能会发送如上所述的序列化字符串,并手动进行如下反序列化:

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

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

字符串是发送数据的好方法。有时很烦人,但它们几乎在任何事情上都起作用。