实用又强大,6 款 Python 时间& 日期库推荐
1、Arrow
Arrow 是一个专门处理时间和日期的轻量级 Python 库,它提供了一种合理、智能的方式来创建、操作、格式化、转换时间和日期,并提供了一个支持许多常见构建方案的智能模块 API 。简单来说,它可以帮你以更简便的操作和更少的代码来使用日期和时间。其设计灵感主要来源于 moment.js 和 requests 。
Quick start
	$ pip install arrow
	>>> import arrow
	>>> utc = arrow.utcnow()
	>>> utc
	<Arrow [2013-05-11T21:23:58.970460+00:00]>
	>>> utc = utc.replace(hours=-1)
	>>> utc
	<Arrow [2013-05-11T20:23:58.970460+00:00]>
	>>> local = utc.to('US/Pacific')
	>>> local
	<Arrow [2013-05-11T13:23:58.970460-07:00]>
	>>> arrow.get('2013-05-11T21:23:58.970460+00:00')
	<Arrow [2013-05-11T21:23:58.970460+00:00]>
	>>> local.timestamp
	1368303838
	>>> local.format()
	'2013-05-11 13:23:58 -07:00'
	>>> local.format('YYYY-MM-DD HH:mm:ss ZZ')
	'2013-05-11 13:23:58 -07:00'
	>>> local.humanize()
	'an hour ago'
	>>> local.humanize(locale='ko_kr')
	'1시간 전'
2、Delorean
Delorean 提供了一个相比于 datetime 和 pytz 的更好的抽象,让你处理时间更容易。它有很多有用的处理时区的特性,标准化时区或者从一个时区改变到另外一个时区。
Quick start
	from datetime import datetime
	import pytz
	est = pytz.timezone('US/Eastern')
	d = datetime.now(pytz.utc)
	d = est.normalize(d.astimezone(est))
	return d
	from delorean import Delorean
	d = Delorean()
	d = d.shift('US/Eastern')
	return d
3、Pendulum
原生的 datetime 足够应付基本情况,但当面对更复杂的用例时,通常会有的捉襟见肘,不那么直观。 Pendulum 在标准库的基础之上,提供了一个更简洁,更易于使用的 API ,旨在让 Python datetime 更好用。
Quick start
>>> import pendulum
	>>> now_in_paris = pendulum.now('Europe/Paris')
	>>> now_in_paris
	'2016-07-04T00:49:58.502116+02:00'
	# Seamless timezone switching
	>>> now_in_paris.in_timezone('UTC')
	'2016-07-03T22:49:58.502116+00:00'
	>>> tomorrow = pendulum.now().add(days=1)
	>>> last_week = pendulum.now().subtract(weeks=1)
	>>> if pendulum.now().is_weekend():
	... print('Party!')
	'Party!'
	>>> past = pendulum.now().subtract(minutes=2)
	>>> past.diff_for_humans()
	>>> '2 minutes ago'
	>>> delta = past - last_week
	>>> delta.hours
	23
	>>> delta.in_words(locale='en')
	'6 days 23 hours 58 minutes'
	# Proper handling of datetime normalization
	>>> pendulum.create(2013, 3, 31, 2, 30, 0, 0, 'Europe/Paris')
	'2013-03-31T03:30:00+02:00' # 2:30 does not exist (Skipped time)
	# Proper handling of dst transitions
	>>> just_before = pendulum.create(2013, 3, 31, 1, 59, 59, 999999, 'Europe/Paris')
	'2013-03-31T01:59:59.999999+01:00'
	>>> just_before.add(microseconds=1)
	'2013-03-31T03:00:00+02:00'
4、dateutil
dateutil 是 datetime 标准库的一个扩展库,几乎支持以所有字符串格式对日期进行通用解析,日期计算灵活,内部数据更新及时。
Quick start
	>>> from dateutil.relativedelta import *
	>>> from dateutil.easter import *
	>>> from dateutil.rrule import *
	>>> from dateutil.parser import *
	>>> from datetime import *
	>>> now = parse("Sat Oct 11 17:13:46 UTC 2003")
	>>> today = now.date()
	>>> year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year
	>>> rdelta = relativedelta(easter(year), today)
	>>> print("Today is: %s" % today)
	Today is: 2003-10-11
	>>> print("Year with next Aug 13th on a Friday is: %s" % year)
	Year with next Aug 13th on a Friday is: 2004
	>>> print("How far is the Easter of that year: %s" % rdelta)
	How far is the Easter of that year: relativedelta(months=+6)
	>>> print("And the Easter of that year is: %s" % (today+rdelta))
	And the Easter of that year is: 2004-04-11
5、moment
用于处理日期/时间的 Python 库,设计灵感同样是来源于 moment.js 和 requests ,设计理念源自 Times Python 模块。
Usage
	import moment
	from datetime import datetime
	# Create a moment from a string
	moment.date("12-18-2012")
	# Create a moment with a specified strftime format
	moment.date("12-18-2012", "%m-%d-%Y")
	# Moment uses the awesome dateparser library behind the scenes
	moment.date("2012-12-18")
	# Create a moment with words in it
	moment.date("December 18, 2012")
	# Create a moment that would normally be pretty hard to do
	moment.date("2 weeks ago")
	# Create a future moment that would otherwise be really difficult
	moment.date("2 weeks from now")
	# Create a moment from the current datetime
	moment.now()
	# The moment can also be UTC-based
	moment.utcnow()
	# Create a moment with the UTC time zone
	moment.utc("2012-12-18")
	# Create a moment from a Unix timestamp
	moment.unix(1355875153626)
	# Create a moment from a Unix UTC timestamp
	moment.unix(1355875153626, utc=True)
	# Return a datetime instance
	moment.date(2012, 12, 18).date
	# We can do the same thing with the UTC method
	moment.utc(2012, 12, 18).date
	# Create and format a moment using Moment.js semantics
	moment.now().format("YYYY-M-D")
	# Create and format a moment with strftime semantics
	moment.date(2012, 12, 18).strftime("%Y-%m-%d")
	# Update your moment's time zone
	moment.date(datetime(2012, 12, 18)).locale("US/Central").date
	# Alter the moment's UTC time zone to a different time zone
	moment.utcnow().timezone("US/Eastern").date
	# Set and update your moment's time zone. For instance, I'm on the
	# west coast, but want NYC's current time.
	moment.now().locale("US/Pacific").timezone("US/Eastern")
	# In order to manipulate time zones, a locale must always be set or
	# you must be using UTC.
	moment.utcnow().timezone("US/Eastern").date
	# You can also clone a moment, so the original stays unaltered
	now = moment.utcnow().timezone("US/Pacific")
	future = now.clone().add(weeks=2)
6、When.py
提供对用户非常友好的特性来帮助执行常见的日期和时间操作。
Usage

 时间:2018-10-10 22:45 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
- [数据挖掘]底层I/O性能大PK:Python/Java被碾压,Rust有望取代
 - [数据挖掘]大数据分析的技术有哪些?
 - [数据挖掘]大数据分析会遇到哪些难题?
 - [数据挖掘]RedMonk语言排行:Python力压Java,Ruby持续下滑
 - [数据挖掘]不得了!Python 又爆出重大 Bug~
 - [数据挖掘]TIOBE 1 月榜单:Python年度语言四连冠,C 语言再次
 - [数据挖掘]TIOBE12月榜单:Java重回第二,Python有望四连冠年度
 - [数据挖掘]这个可能打败Python的编程语言,正在征服科学界
 - [数据挖掘]2021年编程语言趋势预测:Python和JavaScript仍火热,
 - [数据挖掘]Spark 3.0重磅发布!开发近两年,流、Python、SQL重
 
相关推荐:
网友评论:
















