Discuss / Python / 交作业

交作业

Topic source
import re
from datetime import datetime,timedelta,timezone
def to_timestamp(dt_str, tz_str):
    dt = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S') #利用datetime方法转化字符串为datetime类实例
    delta = re.search(r'([+-]\d+)\:',tz_str).group(1)  #利用正则表达式search方法筛选时区字符串中的数
    tz = timezone(timedelta(hours=int(delta)))    #根据时区数生成timezone类实例
    utc_dt = dt.replace(tzinfo=tz)   #利用datetime的replace方法在不改变时间的前提下设置时区,不能用astimezone方法因为                              会同时改变时间
    return utc_dt.timestamp()   #返回设置时区后的datetime类实例的时间戳

一开始用astimezone方法,时间戳一直不对,原来是这个方法在设置时区的同时会改变时间,换成replace设置时区就没问题了

是我没认真看,replace是设置时区,astimezone是转换时区,之前一直在想这两个有什么区别,做完作业就明白了


  • 1

Reply