Python 详解time模块中 UTC世界时间、时间戳、字符串三者的转换

Python 详解time模块中 UTC世界时间、时间戳、字符串三者的转换

本地时间 转换 为时间戳

1
2
3
4
5
6
7
8
9
10
11
12
import time
import pytz
import datetime
date_=datetime.datetime(2018,6,19,20,55,00)
timestamp2=time.mktime(date_.timetuple()) # date_.timetuple() 将datetime 格式的转化为 time 模块的 tuple 格式
print(timestamp2)

# 时间戳转换为本地时间

ltime=time.localtime(1529112900) #time.struct_time(tm_year=2018, tm_mon=6, tm_mday=16, tm_hour=9, tm_min=35, tm_sec=0, tm_wday=5, tm_yday=167, tm_isdst=0)
timeStr=time.strftime("%Y-%m-%d %H:%M:%S", ltime)
print(timeStr)

UTCS 时间转换为时间戳 2018-07-13T16:00:00Z

1
2
3
4
5
6
7
8
9
def utc_to_local(utc_time_str, utc_format='%Y-%m-%dT%H:%M:%SZ'):
local_tz = pytz.timezone('Asia/Chongqing') # 定义本地时区
local_format = "%Y-%m-%d %H:%M:%S" # 定义本地时间format

utc_dt = datetime.datetime.strptime(utc_time_str, utc_format) # 讲世界时间的格式转化为 datetime.datetime 格式
local_dt = utc_dt.replace(tzinfo=pytz.utc).astimezone(local_tz) # 想将 datetime 格式添加上世界时区,然后 astimezone 切换时区:世界时区 ==> 本地时区
# time_str = local_dt.strftime(local_format) # 将 datetime 格式转化为 str—format 格式
# return int(time.mktime(time.strptime(time_str, local_format))) # 运用 mktime 方法将 date—tuple 格式的时间转化为时间戳; time.strptime() 可以得到 tuple 的时间格式
return int(time.mktime(local_dt.timetuple())) # 返回当地时间戳

本地时间转换为 UTC 传入的本地时间戳 1531411200

1
2
3
4
5
6
7
8
9
10
11
12
def local_to_utc(local_ts, utc_format='%Y-%m-%dT%H:%MZ'):
local_tz = pytz.timezone('Asia/Chongqing') # 定义本地时区
local_format = "%Y-%m-%d %H:%M:%S" # 定义本地时间 format

time_str = time.strftime(local_format, time.localtime(local_ts)) # 首先将本地时间戳转化为时间元组,用 strftime 格式化成字符串
dt = datetime.datetime.strptime(time_str, local_format) # 将字符串用 strptime 转为为 datetime 中 datetime 格式
local_dt = local_tz.localize(dt, is_dst=None) # 给时间添加时区,等价于 dt.replace(tzinfo=pytz.timezone('Asia/Chongqing'))
utc_dt = local_dt.astimezone(pytz.utc) # astimezone 切换时区
return utc_dt.strftime(utc_format) # 返回世界时间格式

print(utc_to_local('2018-07-13T16:00:00Z', utc_format='%Y-%m-%dT%H:%M:%SZ'))
print(local_to_utc(1531411200, utc_format='%Y-%m-%dT%H:%MZ'))
1
2
3
4
5
6
'''
1529412900.0
2018-06-16 09:35:00
1531497600
2018-07-12T16:00Z
'''

参考文档

https://blog.csdn.net/brucewong0516/article/details/81100242

---------------- The End ----------------
0%