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