datetime库常用转换

把datatime类型的时间转换为需要的格式

from datetime import datetime time_str = "2016-09-10 4:23:21" time = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')# 根据字符串本身的格式进行转换 time.strftime('%Y-%m-%d-%H-%M') Out>>'2016-09-10-04-23'

python 将带有TZ的UTC时间字符串,转换成本地时间

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。UTC与GMT含义完全相同。北京时区是东八区,领先UTC 8个小时。所以将UTC装换成北京时间时,需要加上8小时。

import datetime


origin_date_str= "2019-07-26T08:20:54Z"
utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%SZ")
local_date = utc_date + datetime.timedelta(hours=8)

local_date_str = datetime.datetime.strftime(local_date ,'%Y-%m-%d %H:%M:%S')
print(local_date_str )    # 2019-07-26 16:20:54

import datetime


utc = "2017-07-28T08:28:47.776Z"
UTC_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
utc_time = datetime.datetime.strptime(utc, UTC_FORMAT)
local_time = utc_time + datetime.timedelta(hours=8)
print(local_time)    # 2017-07-28 16:28:47.776000

使用Python标准库获取当前北京时间 (无需pytz)

  • 中国(大陆、香港、澳门、台湾)、新加坡、马来西亚、文莱、菲律宾均使用UTC+08:00时间且不实施夏时制。

  • 因此无需pytz库,使用Py此方法不受系统默认时区的影响。thon标准库即可计算当前时间及日期。

  • 在时区信息数据库中,Asia/Shanghai代表北京时间(中国标准时间),因为上海是人口最多的城市。

from datetime import datetime
from datetime import timedelta
from datetime import timezone

SHA_TZ = timezone(
    timedelta(hours=8),
    name='Asia/Shanghai',
)



# 协调世界时
utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
print(utc_now, utc_now.tzname())
print(utc_now.date(), utc_now.tzname())



# 北京时间
beijing_now = utc_now.astimezone(SHA_TZ)
print(beijing_now, beijing_now.tzname())
print(beijing_now.date(), beijing_now.tzname())



# 系统默认时区
local_now = utc_now.astimezone()
print(local_now, local_now.tzname())
print(local_now.date(), local_now.tzname())
计算结果

2020-05-01 11:31:20.692283+00:00 UTC
2020-05-01 UTC
2020-05-01 19:31:20.692283+08:00 Asia/Shanghai
2020-05-01 Asia/Shanghai
2020-05-01 21:31:20.692283+10:00 AEST
2020-05-01 AEST

Last updated