【问题标题】:Convert Python UTC time stamp to local time in JavaScript在 JavaScript 中将 Python UTC 时间戳转换为本地时间
【发布时间】:2015-04-19 21:29:31
【问题描述】:

我正在尝试将使用 python 生成的 UTC 时间戳转换为连接客户端的本地时间。但是,时间永远不会正确转换。

Python

import time, datetime


utc_time = datetime.datetime.utcnow()
utc_time = int(time.mktime(utc_time.timetuple())) * 1000

JavaScript

function Time(time) {
    var month = {}
    month[0] = "Jan";
    month[1] = "Feb";
    month[2] = "Mar";
    month[3] = "Apr";
    month[4] = "May";
    month[5] = "Jun";
    month[6] = "Jul";
    month[7] = "Aug";
    month[8] = "Sept";
    month[9] = "Oct";
    month[10] = "Nov";
    month[11] = "Dec";
    day = {}
    day[0] = "Sunday";
    day[1] = "Monday";
    day[2] = "Tuesday";
    day[3] = "Wednesday";
    day[4] = "Thursday";
    day[5] = "Friday";
    day[6] = "Saturday";
    var b = new Date();
    var d = new Date(time);
    var c = d.getTime() + (b.getTimezoneOffset() * 60000);
    var offset = -(b.getTimezoneOffset() /60);
    var res = c + (3600000 * offset);
    d.setTime(res);
    var days = day[d.getDay()];
    var mon = d.getMonth();
    var year = d.getFullYear();
    var hour = d.getHours();
    var minute = d.getMinutes();
    var seconds = d.getSeconds();
    var date = d.getDate();
    return days + ' - ' + month[mon] + '/' + date + '/' + year + " - " + hour + ":" + minute + ":" + seconds;
}
console.log(Time(1429490580*1000)); 
// time stamp generated: Sunday - Apr/19/2015  at 4:43PM

是我的数学错误还是我在 python 方面做错了什么?

【问题讨论】:

  • 什么python版本?
  • python版本为2.7

标签: javascript python utc


【解决方案1】:

你的时间戳不正确:

import datetime
utc_time = datetime.datetime.utcnow()
timestamp = (utc_time - datetime.datetime(1970, 1, 1)).total_seconds()

【讨论】:

    【解决方案2】:

    您的 Javascript 似乎比必要的复杂得多,除非我误解了您的目标。 Unix 时间戳值始终为 UTC,默认情况下,基本 Date.toString() 将在本地客户端时区输出。除非您想要提供的标准格式以外的输出格式,否则无需手动转换。

    var ourDateTime = new Date(timestampFromServer);
    console.log(ourDateTime.toString());
    

    【讨论】:

    • 我按照你发布的内容做了,我收到了Sun Apr 19 2015 20:43:00 GMT-0400 (Eastern Standard Time) 时间差 4 小时
    • 服务器生成的时间戳是什么,您期望的日期是什么?该时间字符串匹配 1429490580000。
    • 1429490580000 应该与 Sunday - Apr/19/2015 at 16:43 匹配,即生成该特定值的时间。
    • 在我发布此内容时,当前的 Unix 时间戳为 1429483975000。我认为您在服务器上生成的时间戳已关闭。
    猜你喜欢
    • 2019-01-05
    • 2019-08-15
    • 2011-02-06
    • 1970-01-01
    • 2019-03-09
    • 2013-03-23
    • 2021-03-05
    • 2018-09-17
    • 2015-04-20
    相关资源
    最近更新 更多