python语言arrows用法_python时区运算,时区,时间戳,夏令时讲解

这篇博客介绍了Python中处理时间的Arrow库和Pytz库的使用方法。通过示例展示了如何获取当前时间、转换时区、时间戳转换以及格式化日期等操作。还探讨了从北京时间到加拿大纽芬兰时区的转换,以及时间戳的定义。同时提到了Python内置的pytz库用于获取全球时区。
摘要由CSDN通过智能技术生成

import arrow

from datetime import datetime

import pytz

def test_demo():

"""

arrow 实例

:return:

"""

# 获取当前utc时间(世界时间)

utc = arrow.utcnow()

print("当前世界时间:%s" % utc) # 2020-04-19T06:31:29.595262+00:00

# 减去一小时

utc_h = utc.shift(hours=-1)

print("当前世界时间减去一小时:%s" % utc_h) # 2020-04-19T05:31:29.595262+00:00

# 传入时区('Asia/Shanghai')北京时间,打印的时间是加8小时后的

local = utc.to('Asia/Shanghai')

print("北京当前时间:%s" % local) # 2020-04-19T14:31:29.595262+08:00

# 转换成时间戳(单位秒),此处注意只有带时区的时间信息转换后的时间戳才是正确的;

timestamp = local.timestamp

print("UTC 时间戳:%s" % timestamp) # 1587278432

# 显示格式转换

form = local.format() # 默认格式:"YYYY-MM-DD HH:mm:ss ZZ"

print("带时区信息的北京时间:%s" % form) # 2020-04-19 14:43:50+08:00

form = local.format("YYYY-MM-DD HH:mm:ss")

print("格式化后的北京时间:%s" % form) # 2020-04-19 14:43:50

def test_arrow_now():

"""

arrow.now() 使用

:return:

"""

# 获取当前utc时间(世界时间)

utc = arrow.utcnow()

print(utc) # 2020-04-19T06:31:29.595262+00:00

# 获取当期时间(本地时间),不指定时区时默认本机时区,自动识别本机时区;

utc = arrow.now()

print(utc) # 2020-04-19T14:50:26.412411+08:00

# 自定义时区 ‘America/St_Johns’加拿大时区

utc = arrow.now(tz='America/St_Johns')

print(utc) # 2020-04-19T04:26:01.613671-02:30

def test_arrow_get():

"""

arrow.get() 使用

:return:

"""

# 时间戳转换日期格式,默认转换为utc世界时间,反转请看demo02

utc = arrow.get(1587280058) # 秒级

print(utc) # 2020-04-19T06:56:01+00:00

utc = arrow.get(1587280058.2278044) # 毫秒级

print(utc) # 2020-04-19T07:07:38.227804+00:00

# 支持传入datetime类型,arrow对datetime支持非常友好,此处不一一列举;

utc = arrow.get(datetime.utcnow())

print(utc) # 2020-04-19T07:07:38.227804+00:00

# arrow 格式转datetime

a = arrow.utcnow()

var = a.datetime

print(type(var)) #

# 字符串格式日期,转arrow 日期格式

arrow_time = arrow.get('2020-04-19 07:30:45', 'YYYY-MM-DD HH:mm:ss')

print(arrow_time) # 2020-04-19T07:30:45+00:00

arrow_time = arrow.get('2020-04-19T07:30:45.000-07:00')

print(arrow_time) # 2020-04-19T07:30:45-07:00

arrow_time = arrow.get(2020, 4, 19)

print(arrow_time) # 2020-04-19T00:00:00+00:00

def demo01():

"""

北京时间转加拿大纽芬兰时区时间

计算公式:

北京时间 = 世界时间 + 8小时

加拿大纽芬兰时区时间 = 世界时间 - 3:30小时

加拿大纽芬兰时区夏令时时间 = 北京时间 - 8小时 - 3:30小时 + 1小时

:return:

"""

# 加拿大有很多时区,我们这里选择纽芬兰时区

timezone = "America/St_Johns"

# 北京时间

timestr = "2020-04-19 16:19:48"

# 此处重点注意:

# 1,get()只能用来做格式转换,不能进行时区转换,转换需要使用to()方法

# 2,北京时间不能直接进行转换,需要使用replace()指定传入时间的时区

a_time = arrow.get(timestr, 'YYYY-MM-DD HH:mm:ss').replace(tzinfo='Asia/Shanghai')

# arrow会自动识别时区是否进入夏令时,进入后会自动+1

jnd_time = a_time.to(tz=timezone)

print(jnd_time) # 2020-04-19T05:49:48-02:30 加拿大夏令时时间

return jnd_time

def demo02():

"""

北京时间转时间戳

时间戳的定义:表示当前时间到1970年1月1日00:00:00 UTC对应的毫秒数;

重点:UTC (世界协调时)对应的秒数,不是北京时间对应的秒数;

:return: UTC 时间戳(秒)

"""

# 北京时间

timestr = "2020-04-19 16:19:48"

# 此处重点注意:北京时间不能直接进行时间戳转换,需要使用replace()指定传入时间的时区,或者timestr中带上时区

a_time = arrow.get(timestr, 'YYYY-MM-DD HH:mm:ss').replace(tzinfo='Asia/Shanghai')

time = a_time.timestamp

print(time) # 1587284388

return time

def get_timezone():

"""

使用python内置库pytz 获取时区库(pytz:python内置时区库)

:return: 时区列表

"""

# 获取指定国家的时区iso3166_code国家代码对照表,加拿大Canada:ca

tz = pytz.country_timezones(iso3166_code='CA')

print(tz[0])

# 获取全部时区

# tz = pytz.all_timezones

return tz

if __name__ == '__main__':

test_demo()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值