生成以下伪时间戳作为解决flot图形库限制的解决方法

2024-05-15 05:48:20 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有以下以秒为单位的当前时间戳值示例。

1299196800。意思是

4 March 2011 0:0:0 in Greenwich (GMT)

4 March 2011 8:0:0 in Malaysia (GMT +8)

目前,如果我的Python脚本传入一个flot graphing javascript库,它将始终显示Greenwich的时间4 March 2011 0:0:0,而不是马来西亚的时间4 March 2011 8:0:0,尽管客户机使用的是马来西亚时区。

我的python服务器始终与客户机具有相同的时区。我们希望4 March 2011 8:0:0显示在客户端。

因此,为了解决flot图形库的限制问题,我希望传递1299196800,而不是传递1299196800

# 8 is timezone offset.
# 1299196800 is current timestamp.
pseudo_timestamp = 1299196800 + 8 * 60 * 60 

我可以知道如何用python生成上面的“伪时间戳”?用固定时区操作是个好主意吗?在日光节约方面会遇到什么问题吗?


Tags: in脚本示例客户机is时间单位javascript
2条回答

您可以将datatime对象与具有时区意识的tzinfo一起使用。 下面是一小段你是如何做到这一点的。在

import datetime
from datetime import tzinfo, timedelta

class GMT8(tzinfo):
    def utcoffset(self, dt):
        return timedelta(hours=8)
    def tzname(self, dt):
        return "GMT +8"
    def dst(self,dt):
        return timedelta(0)

malaysiatime = GMT8()

o = datetime.datetime.fromtimestamp(1299196800,malaysiatime)
print o
# prints 2011-03-04 08:00:00+08:00

flot中的UTC时间是按设计的:查找时间戳here,建议的解决方案是固定时间偏移量。在

考虑到flot时间戳是以毫秒表示的,因此您必须将示例偏移量乘以1000。在

但是,使用一个固定的时间戳不是一个好主意:一般情况下,您会尝试发现客户机偏移量,但是由于您确定它与服务器的偏移量相同,所以可以使用服务器数据来执行此操作。在

使用time.daytime来发现日光节约是否有效,然后相应地使用time.timezome或{}以小时为单位获得偏移量。在

Python doc on time是here

鉴于此,您可以调整时间戳,转换偏移量(毫秒),并将其添加到时间戳中(您已经做了:)

相关问题 更多 >

    热门问题