Discuss / Python / 交作业。如有不对烦请指正。

交作业。如有不对烦请指正。

Topic source
import re
from datetime import datetime, timezone, timedelta

def to_timestamp(dt_str, tz_str):
	day = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
	utc = re.match(r'UTC([+-]\d+)\:(\d+)', tz_str)
	offset = float(utc.group(1)+'.'+utc.group(2))
	day_utc = day.replace(tzinfo=timezone(timedelta(hours=offset)))
	return day_utc.timestamp()
	
# 测试:
t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')
assert t1 == 1433121030.0, t1

t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')
assert t2 == 1433121030.0, t2

print('ok')

timestamp是相对于1970年1月1日 00:00:00 UTC+00:00时区的秒数差。

1、相同的timestamp,通过fromtimestamp()获得的本地datetime在不同时区是不一样的,通过utcfromtimestamp()获得的UTC时间是一样。

2、相同的datetime,通过date.timestamp() 函数转换后获得的timestamp是不一样的,因为会根据本地时区相对于UTC时区的偏移值自动调整。

3、timestamp()函数是根据tzinfo来转换的。


  • 1

Reply