Python时间操作之datetime
随着越来越多的企业将现实世界中的事件变成数据,不可避免地出现了处理时间的需求。 Python 提供了 datetime 模块来处理日期和时间,与计算机编程语言类似,程序员在他们的编程工作中处理的大多数时间信息aff都属于datetime 模块。
datetime模块是python内置的模块,它支持日期和时间的各种操作。这些操作包括基本的时间计算,字符串转换,时区间的计算等等,这些操作在处理计算机时间方面都是非常有用的。
datetime 模块中有几个主要的类和函数,比如time,date,datetime,stamp,tzinfo等。专栏主要介绍datetime模块的datetime类,它能够用来表示时间,可以用来执行一些基本的时间操作。
首先,使用datetime类可以很容易的表示一个特定的日期和时间,可以使用以下简单的形式:
datetime.datetime(year, month, day, hour, minute, second, microsecond)
其中,year,month,day,hour,minute,second和microsecond都是int型,即整数。
如果需要表示当前时间,可以调用datetime中的now方法,如:
now = datetime.datetime.now()
此外,datetime类也提供了一些用于比较两个datetime对象的方法,比如:
before_date = datetime.datetime(2017, 5, 20)
after_date = datetime.datetime(2017, 5, 25)
if before_date < after_date:
print “before date is earlier than after date”
datetime类也支持timedelta对象,这种对象可以用来表示一段时间的差值。可以使用timedelta对象来加上或减去一段时间,如:
date1 = datetime.datetime(2017, 5, 25)
time_span = dattime.timedelta(hours=3)
date2 = date1 + time_span
我们还可以使用timedelta对象来比较时间的差值,获取两段时间的差距:
date1 = datetime.datetime(2017, 5, 25)
date2 = datetime.datetime(2017, 5, 30)
time_diff = date2 - date1
print time_diff
datetime模块也提供一些可以把时间对象转换为字符串的方法,常用的strftime和strptime。strftime是把时间对象转换为字符串,strptime是把字符串转换为时间对象。
比如,我们可以使用strftime方法把一个时间对象转换为一个特定格式的字符串:
date = datetime.datetime(2017, 5, 25)
date_str = date.strftime('%Y/%m/%d %H:%M:%S')
print date_str
同样,也可以使用strptime方法把一个字符串转换为时间对象:
date_str = '2017/05/25 8:00:00'
date = datetime.datetime.strptime(date_str, '%Y/%m/%d %H:%M:%S')
print date
最后,datetime模块还包含一些其他实用工具,比如tzinfo和strptime类,这些类可以帮助程序员更好地处理时间:
import time
import datetime
# tzinfo类用来处理时区
cct = time.timezone
cct_diff = datetime.timedelta(seconds=cct)
cct_tzinfo = datetime.tzinfo(-cct_diff, 'China Time Zone')
# strptime类用来解析字符串
date_str = '2017/05/25 8:00:00'
date = datetime.datetime.strptime(date_str, '%Y/%m/%d %H:%M:%S')
由此可见,datetime模块提供了一系列的工具,可以方便程序员用来处理和解析日期和时间。datetime类提供的timedelta对象可以用来加减时间,strftime和strptime方法可以方便地把时间对象和字符串彼此转换,tzinfo和strptime类可以更好地处理时区。因此,如果有任何和日期或时间有关的需求,程序员一定要注意datetime模块,把它当作自己的助手,充分利用它,处理好时间数据。