为何相同日期下Python和JavaScript生成的时间戳不一致?
两个时间戳存在差异的核心原因是两者的时区处理逻辑不同,差值为19800000毫秒(即5.5小时),刚好对应UTC+5:30时区与UTC标准时间的时差:
- JavaScript侧:当使用年、月、日三个参数调用
new Date()构造函数时,默认会以代码运行环境的本地时区创建日期对象。你的运行环境时区为UTC+5:30,因此代码中new Date(2021, 10, 12)生成的是UTC+5:30时区2021年11月12日0点的时间,对应UTC时间为2021年11月11日18点30分,转换为时间戳就是1636655400000。 - Python侧:
datetime.strptime默认生成的是不带时区信息的naive datetime对象,调用timestamp()方法时,如果Python运行环境的默认时区为UTC,就会把输入的日期当做UTC时区2021年11月12日0点计算,得到的时间戳就是1636675200000,和JS结果刚好相差5.5小时。
如果需要两者输出一致,统一时区基准即可:比如JS侧改用Date.UTC()生成UTC时区的日期对象,或者Python侧给datetime对象绑定UTC+5:30的时区信息后再转换时间戳。
内容的提问来源于stack exchange,提问作者souparno majumder
相关产品推荐
相关产品推荐

