arrow python处理日期时间

Python针对日期时间的处理提供了大量的package,类和方法,但在可用性上来看非常繁琐和麻烦

第三方库Arrow提供了一个合理的、人性化的方法来创建、操作、格式转换的日期,时间,和时间戳,帮助我们使用较少的导入和更少的代码来处理日期和时间。

 pip install arrow

获取当前时间    arrow.utcnow(), arrow.now()

>>> arrow.utcnow()
<Arrow [2013-05-07T04:20:39.369271+00:00]>

>>> arrow.now()
<Arrow [2013-05-06T21:20:40.841085-07:00]>

>>> arrow.now(‘US/Pacific‘)
<Arrow [2013-05-06T21:20:44.761511-07:00]>

将时间戳转化为arrow对象    arrow.get(timestamp)

>>> arrow.get(1367900664)
<Arrow [2013-05-07T04:24:24+00:00]>

>>> arrow.get(1367900664.152325)
<Arrow [2013-05-07T04:24:24.152325+00:00]>

# 时间戳可以是int,float或者可以转化为float的字符串

将字符串转换为arrow对象    arrow.get(string[,format_string])

>>> arrow.get(datetime.utcnow())
<Arrow [2013-05-07T04:24:24.152325+00:00]>

>>> arrow.get(datetime(2013, 5, 5), ‘US/Pacific‘)
<Arrow [2013-05-05T00:00:00-07:00]>

>>> from dateutil import tz
>>> arrow.get(datetime(2013, 5, 5), tz.gettz(‘US/Pacific‘))
<Arrow [2013-05-05T00:00:00-07:00]>

>>> arrow.get(datetime.now(tz.gettz(‘US/Pacific‘)))
<Arrow [2013-05-06T21:24:49.552236-07:00]>

直接创建arrow对象

>>> arrow.get(‘2013-05-05 12:30:45‘, ‘YYYY-MM-DD HH:mm:ss‘)
<Arrow [2013-05-05T12:30:45+00:00]>
>>> arrow.get(‘June was born in May 1980‘, ‘MMMM YYYY‘)
<Arrow [1980-05-01T00:00:00+00:00]>
>>> arrow.get(‘2013-09-30T15:34:00.000-07:00‘)
<Arrow [2013-09-30T15:34:00-07:00]>
>>> arrow.get(2013, 5, 5)
<Arrow [2013-05-05T00:00:00+00:00]>

>>> arrow.Arrow(2013, 5, 5)
<Arrow [2013-05-05T00:00:00+00:00]>

arrow对象属性    datetime,timestamp,native,tzinfo

>>> a = arrow.utcnow()
>>> a.datetime
datetime.datetime(2013, 5, 7, 4, 38, 15, 447644, tzinfo=tzutc())

>>> a.timestamp
1367901495
>>> a.naive
datetime.datetime(2013, 5, 7, 4, 38, 15, 447644)

>>> a.tzinfo
tzutc()

>>> a.year
2013

>>> a.date()
datetime.date(2013, 5, 7)

>>> a.time()
datetime.time(4, 38, 15, 447644)


Replace & Shift

替换和推移时间

shift方法获取某个时间之前或之后的时间,关键字参数为 years, months, days, hours, minutes, seconds, microseconds, weeks, quarters, weekday

>>> arw = arrow.utcnow()
>>> arw
<Arrow [2013-05-12T03:29:35.334214+00:00]>

>>> arw.replace(hour=4, minute=40)
<Arrow [2013-05-12T04:40:35.334214+00:00]>
>>> arw.shift(weeks=+3)
<Arrow [2013-06-02T03:29:35.334214+00:00]>
>>> arw.replace(tzinfo=‘US/Pacific‘)
<Arrow [2013-05-12T03:29:35.334214-07:00]>

格式化输出 和 类型转换

>>> arrow.utcnow().format(‘YYYY-MM-DD HH:mm:ss ZZ‘)
‘2013-05-07 05:23:16 -00:00
>>> utc = arrow.utcnow()
>>> utc
<Arrow [2013-05-07T05:24:11.823627+00:00]>

>>> utc.to(‘US/Pacific‘)
<Arrow [2013-05-06T22:24:11.823627-07:00]>

>>> utc.to(tz.gettz(‘US/Pacific‘))
<Arrow [2013-05-06T22:24:11.823627-07:00]>
>>> utc.to(‘local‘)
<Arrow [2013-05-06T22:24:11.823627-07:00]>

>>> utc.to(‘local‘).to(‘utc‘)
<Arrow [2013-05-07T05:24:11.823627+00:00]>

人性化输出    a.humanize()

>>> past = arrow.utcnow().shift(hours=-1)
>>> past.humanize()
‘an hour ago‘
>>> present = arrow.utcnow()
>>> future = present.shift(hours=2)
>>> future.humanize(present)
‘in 2 hours‘

>>> present = arrow.utcnow()
>>> future = present.shift(hours=2)
>>> future.humanize(present)
‘in 2 hours‘
>>> future.humanize(present, only_distance=True)
‘2 hours‘

>>> present = arrow.utcnow()
>>> future = present.shift(minutes=66)
>>> future.humanize(present, granularity="minute")
‘in 66 minutes‘
>>> future.humanize(present, granularity=["hour", "minute"])
‘in an hour and 6 minutes‘
>>> present.humanize(future, granularity=["hour", "minute"])
‘an hour and 6 minutes ago‘
>>> future.humanize(present, only_distance=True, granularity=["hour", "minute"])
‘an hour and 6 minutes‘
 
>>> future = arrow.utcnow().shift(hours=1)
>>> future.humanize(a, locale=‘ru‘)
‘через 2 час(а,ов)‘

参考:github

原文地址:https://www.cnblogs.com/clbao/p/12144113.html

时间: 2024-08-28 05:45:16

arrow python处理日期时间的相关文章

送你6 个 Python 的日期时间库!让你的Python更加得心应手!

内建的 datetime 模块 让我们看看其他库是如何处理这种转换的. Dateutil 通过 Arrow datetime 类的实例,你可以访问 Arrow 的其他有用方法.例如,它的humanize()方法将日期时间翻译成人类可读的短语,就像这样: 由于 Maya 与 datetime 库中很多有用的方法重叠,因此它可以使用 MayaDT 类的实例执行诸如使用 slang_time() 方法将时间偏移量转换为纯文本语言,并将日期时间间隔保存在单个类的实例中.以下是如何使用 Maya 将日期时

python 之日期时间处理

##python时间操作一般使用time.datetime两个模块 对于time模块,时间的表示模式有3种1.时间戳:time.time()2.字符串: time.strftime('%Y%m%d')3.struct_time格式: time.localtime() 如下所示: 1 #时间操作 2 >>> import time 3 >>> time.time() 4 1450336566.81052 5 >>> time.localtime() 6

Python中对时间日期的处理方法简单汇总

这篇文章主要介绍了Python实用日期时间处理方法汇总,本文讲解了获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个datetime的时间差.获取本周/本月/上月最后一天等实用方法 ,需要的朋友可以参考下 原地址:http://www.cnblogs.com/wenBlog/p/6097220.html 原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理 步

Arrow-一个最好用的日期时间Python处理库

https://www.jianshu.com/p/c878bb1c48c1 写过Python程序的人大都知道,Python日期和时间的处理非常繁琐和麻烦,主要有以下几个问题: 有众多的package,类和方法,包括time,datetime,pytz等等 经常需要各种转换,比如时间戳,structtime,时间字符串之间相互转换,localtime和utctime的转换 难以记忆,有违人性的时间格式化字符串%Y %M %m %D %d 基于以上几点,每次做时间处理的时候总是需要翻看以前的代码或

python操作日期和时间的方法

经常获得了一个用户提交的当前日期,我们需要以这个日期为依据返回它的前一天.后一天的日期或者转换操作等.用Python可以非常简单的解决这些关于日期计算的问题. 不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法. 1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray 

【Python】随机模块random &amp; 日期时间のtime&amp;&amp;datetime

■ random 顾名思义,random提供了python中关于模拟随机的一些方法.这些方法都一看就懂的,不多说了: random.random() 返回0<n<=1的随机实数 random.uniform(a,b) 返回a<n<=b的随机实数 random.randrange([start],stop,[step]) 返回序列range(start,stop,step)中随机一项 random.choice(seq) 返回序列中随机一项 random.sample(seq,n)

Python之日期与时间处理模块(date和datetime)

本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算某个功能的执行时间 用日期命名一个日志文件的名称 记录或展示某文章的发布或修改时间 其他 Python中提供了多个用于对日期和时间进行操作的内置模块:time模块.datetime模块和calendar模块.其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库

Python日期时间函数处理

所有日期.时间的 api 都在datetime模块内. 1 日期的格式化输出 datetime => string import datetime now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') 输出 '2015-04-07 19:11:21' strftime是datetime类的实例方法. string => datetime import datetime t_str = '2015-04-07 19:11:

Unix时间戳转日期时间格式,C#、Java、Python各语言实现!

之前有个Q上好友没事问我,怎么自己写Unix时间戳转日期时间?于是我就顺手写了个C#版本给他!最近想起来,就萌发多写几个语言的版本分享,权当练习思路外加熟悉另外两种语言. 先说转换步骤 先处理年份,从1970年开始处理,根据平年闰年的总秒数,先得到年,剩余的秒数再求月份: 根据剩余秒数求得月份,因为2月的缘故,同样需要处理平年闰年': 得天数,直接除以每天的总秒数,然后取得天: 取小时.分钟.秒: Python版本: # -*- coding: UTF-8 -*- from datetime i