python中日期相关操作总结

datetime模块

1
datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

今天

1
2
3
4
5
import time
from datetime import date, datetime, timedelta

today_date = datetime.today()
today_date
1
"datetime.datetime(2019, 3, 24, 18, 49, 16, 624213)
1
date.today()
1
datetime.date(2019, 3, 24)
1
date.fromtimestamp(time.time())
1
datetime.date(2019, 3, 24)

自定义日期

自己初始化一个日期,2019年1月31日11点5分:

1
2
some_day = datetime(2019, 1, 31, 11, 5, 0, 0)
some_day
1
datetime.datetime(2019, 1, 31, 11, 5)

注意datetime会帮你检查日期的合法性,比如输入

1
datetime(2019, 1, 32, 11, 5, 0, 0)

会返回:

1
ValueError: day is out of range for month

常用的属性

1
print("-".join(map(str, [some_day.year, some_day.month, some_day.day, some_day.hour, some_day.minute, some_day.second])))
1
2019-1-31-11-5-0

常用函数

星期几

1
some_day.weekday()
1
3

时间戳

1
some_day.timestamp()
1
1548903900.0

优雅的表示:

1
some_day.strftime("%b %d %Y %H:%M:%S")
1
'Jan 31 2019 11:05:00'
1
some_day.strftime("%Y-%m-%d %H:%M:%S")
1
'2019-01-31 11:05:00'

相反的操作,从字符串到datetime

1
datetime.strptime("2019-01-31 11:05:00", "%Y-%m-%d %H:%M:%S")
1
datetime.datetime(2019, 1, 31, 11, 5)

高级应用

获得某个月的最后一天:

参考https://stackoverflow.com/questions/42950/get-last-day-of-the-month-in-python

1
2
3
4
5
def get_end_day_this_month():
today = date.today()
return datetime(today.year, today.month + 1, 1, 23, 59, 59, 999999) - timedelta(days=1)

get_end_day_this_month()
1
datetime.datetime(2019, 3, 31, 23, 59, 59, 999999)