Python - 日期和时间
在数据科学中,我们经常需要基于时间值的分析。Python 可以优雅地处理各种格式的日期和时间。datetime 库 提供了处理以下场景所需的方法和函数。
- 日期时间表示
- 日期时间算法
- 日期时间比较
我们将逐一研究它们。
日期时间表示
日期及其各个部分通过使用不同的日期时间函数来表示。此外,还有格式说明符,它们在显示日期的字母部分(如月份名称或星期几)方面发挥作用。以下代码显示今天的日期和日期的各个部分。
import datetime print 'The Date Today is :', datetime.datetime.today() date_today = datetime.date.today() print date_today print 'This Year :', date_today.year print 'This Month :', date_today.month print 'Month Name:',date_today.strftime('%B') print 'This Week Day :', date_today.day print 'Week Day Name:',date_today.strftime('%A')
当我们执行上述代码时,它会产生以下结果。
The Date Today is : 2018-04-22 15:38:35.835000 2018-04-22 This Year : 2018 This Month : 4 Month Name: April This Week Day : 22 Week Day Name: Sunday
日期时间算术
对于涉及日期的计算,我们将各种日期存储到变量中,并对这些变量应用相关的数学运算符。
import datetime # 捕获第一个日期 day1 = datetime.date(2018, 2, 12) print 'day1:', day1.ctime() # 捕获第二个日期 day2 = datetime.date(2017, 8, 18) print 'day2:', day2.ctime() # 查找日期之间的差异 print '天数:', day1-day2 date_today = datetime.date.today() # 创建四天的增量 no_of_days = datetime.timedelta(days=4) # 使用增量表示过去日期 before_four_days = date_today - no_of_days print '四天前:', before_four_days # 使用增量表示未来日期 after_four_days = date_today + no_of_days 打印'四天后:',after_four_days
当我们执行上述代码时,它会产生以下结果。
day1: Mon Feb 12 00:00:00 2018 day2: Fri Aug 18 00:00:00 2017 Number of Days: 178 days, 0:00:00 Before Four Days: 2018-04-18 After Four Days: 2018-04-26
日期时间比较
使用逻辑运算符比较日期和时间。但是,我们必须小心比较日期的正确部分。在下面的例子中,我们取未来日期和过去日期,并使用 python if 子句和逻辑运算符对它们进行比较。
import datetime date_today = datetime.date.today() print '今天是:', date_today # 创建四天的增量 no_of_days = datetime.timedelta(days=4) # 使用过去日期的增量 before_four_days = date_today - no_of_days print 'Before Four Days:', before_four_days after_four_days = date_today + no_of_days date1 = datetime.date(2018,4,4) print 'date1:',date1 if date1 == before_four_days : print 'Same Dates' if date_today > date1: print 'Past Date' if date1 < after_four_days: print 'Future Date'
当我们执行上述代码时,它会产生以下结果。
Today is: 2018-04-22 Before Four Days: 2018-04-18 date1: 2018-04-04 Past Date Future Date