从JavaScript到Python后端提交时间



我有一个表单,该表单将日期对象从javascript发送到python backend。该日期输入GMT +0530,但在Python中,它被解析为GMT +0000

以下是JavaScript日志:

> $scope.my_date.getTime()
< 1480617000000
> $scope.my_date
< Fri Dec 02 2016 00:00:00 GMT+0530 (IST)

所以,上述日期被解析为Thur Dec 01 2016 18:30:00 GMT+0000

如何发送填充表格的国家/地区的时区,以便我可以使用该时区将时间从Dec 01转换为Dec 02

我可以通过以下方法以小时(python)发送偏移:

> $scope.my_date.getTimezoneOffset()/60
< -5.5

但是,python的pytz以"Asia/Kolkata"格式理解时区,而不是-5.5格式。

我可以手动调整-5.5的日期,但是我正在寻找一个干净的解决方案。

我使用以下方法解决上述问题。

我在将其发送到服务器之前更改了JS本身的时间。

($scope.my_date.getTime()/1000) - ($scope.my_date.getTimezoneOffset()*60)

Math.floor($scope.my_date.getTime()/1000)提交,在python方面只需阅读unix时间戳。

解释:getTime()返回带有毫秒的UNIX时间戳记,或以下是miliseconds的数量:

1970年1月1日00:00:00 UTC

我已经大胆了最后一点,因为它很重要。创建UNIX时间戳记时,您的时区域都无关紧要,它始终是UTC。适当处理UNIX时间戳的每个编程语言和工具都将以UTC的时间戳记阅读,并内部转换为本地/正确的时区。

因此,不要试图解析日期字符串的事情变得复杂 - 只需使用时间戳 - 它是通用的。

唯一的陷阱是删除毫秒的转换(带有Math.floor/1000)。

相关内容

  • 没有找到相关文章

最新更新