Discuss / Python / 我有点不理解,datetime不是可以直接转为timestamp的么,那就不需要时区这个变量了啊?

我有点不理解,datetime不是可以直接转为timestamp的么,那就不需要时区这个变量了啊?

Topic source
>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> dt.timestamp() # 把timestamp转换为datetime
1429417200.0

根据教程里写的这一段 那其实只需要

from datetime import datetime
def timestamp(dt_str):
    dt = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
    t = dt.timestamp()
    return t

不需要时区的概念啊!

小白求指教 !

我懂了……

datetime 直接转换成 timestamp 的话,转的其实是把本地时间转化成了timestamp

而题目要求是 指定时区的时间 转化成 timestamp....

def timestamp(dt_str, tz_str):
    dt = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
    tz= re.match(r'UTC([+|-]\d+):00',tz_str).group(1)    
    dt = dt.replace(tzinfo= timezone(timedelta(hours=int(tz))))
    utc_dt = dt.astimezone(timezone(timedelta(hours=int(tz))))
    return datetime.timestamp(utc_dt)

PASS了 Finally。。。

def to_timestamp(dt_str, tz_str): dt = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S') tz= re.match(r'UTC([+|-]\d+):00',tz_str).group(1) dt = dt.replace(tzinfo= timezone(timedelta(hours=int(tz)))) return datetime.timestamp(dt)

你好,我把你的代码倒数第二行删掉了,效果一样,怎么回事?

fridayily

#5 Created at ... [Delete] [Delete and Lock User]

倒数第二行的意思是将现在所在时区的时间转换为UTC时间,这两个时间只有有时区的差别,但所转换timestamp是一样的


  • 1

Reply