前言
datetime是python的内置模块,用来处理日期和时间。 该模块常用的类有:
- date 日期对象
- time 时间对象
- datetime 日期时间对象
- timedelta 时间间隔
- tzinfo 时区信息对象
本文旨在讲解datetime模块中datetime类的使用方法。 datetime对象是 date 与 time 的结合体,涵盖了date和time对象的所有信息。
导入datetime类
第一步,先导入datetime类:
from?datetime?import?datetime
构造datetime对象
datetime(year,month,day,hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
参数范围:
- MINYEAR <= year <= MAXYEAR
- 1 <= month <= 12
- 1 <= day <= 指定年月的天数
- 0 <= hour < 24
- 0 <= minute < 60
- 0 <= second < 60
- 0 <= microsecond < 1000000
实例:
datetime(2019,12,6,13,30,50)
#?输出?:?datetime.datetime(2019,?12,?6,?13,?30,?50)
类方法
- datetime.today()
返回本地区当前日期时间datetime对象
datetime.today()
#?输出?:?datetime.datetime(2019,?12,?9,?13,?27,?54,?693978)
- datetime.now(tz=None)
返回本地区当前日期时间datetime对象,可以添加时区tz 默认无时区时,返回结果和datetime.today()一致
datetime.now()
#?输出?:?datetime.datetime(2019,?12,?9,?13,?27,?54,?693978)
- datetime.utcnow()
返回UTC(同格林尼治时间)日期时间datetime对象
datetime.now()
#?输出?:?datetime.datetime(2019,?12,?9,?13,?27,?54,?693978)
- datetime.fromtimestamp(timestamp, tz=None)
返回给定时间戳的datetime对象,时区默认为空,返回当地日期时间,也可以指定时区
datetime.fromtimestamp(1575877756)
#?输出?:?datetime.datetime(2019,?12,?9,?15,?49,?16)
想获取当前时间戳,可通过time模块的time方法实现:
import?time
time.time()
#?输出:1575877756.4673727
- datetime.utcfromtimestamp(timestamp)
返回给定时间戳的datetime对象,日期时间默认为UTC(同格林尼治时间)
datetime.fromtimestamp(1575877756)
#?输出?:?datetime.datetime(2019,?12,?9,?7,?49,?16)
- datetime.fromordinal(ordinal)
输入参数为天数,返回从公元0年开始计数的年、月、日datetime对象 比如输入参数为365,则返回1-12-31
datetime.fromordinal(365)
#?输出?:?datetime.datetime(1,?12,?31,?0,?0)
- datetime.combine(date, time, tzinfo=self.tzinfo)
拼接date和time对象,形成一个新的datetime对象 可以输入时区参数,否则默认为原time的时区
date_?=?datetime.today().date()
time_?=?datetime.today().time()
datetime.combine(date_,time_)
#?输出?:?datetime.datetime(2019,?12,?9,?16,?12,?56,?914484)
- datetime.strptime(date_string, format)
将格式化日期时间字符串,转换为datetime对象,可以转换日期、时间、日期时间
datetime.strptime('2019-11-05','%Y-%m-%d')
#?输出?:?datetime.datetime(2019,?11,?5,?0,?0)
datetime.strptime('09:30:50','%H:%M:%S')
#?输出?:?datetime.datetime(1900,?1,?1,?9,?30,?50)
datetime.strptime('2019-11-05?09:30:50','%Y-%m-%d?%H:%M:%S')
#?输出?:?datetime.datetime(2019,?11,?5,?9,?30,?50)
实例方法
- datetime.date()
返回date对象
d?=?datetime(2019,12,6,13,30,50)
d.date()
#?输出?:?datetime.date(2019,?12,?6)
- datetime.time()
返回time对象
d?=?datetime(2019,12,6,13,30,50)
d.time()
#?输出?:?datetime.time(13,?30,?50)
- datetime.timestamp()
对于给定的 datetime对象返回时间戳
d?=?datetime(2019,12,6,13,30,50)
d.timestamp()
#?输出?:?1575610250.0
- datetime.weekday()
返回星期几,星期一为 0,星期天为 6
d?=?datetime(2019,12,6,13,30,50)
d.weekday()
#?输出?:?4
- datetime.isoweekday()
返回星期几,星期一为 1,星期天为 7
d?=?datetime(2019,12,6,13,30,50)
d.isoweekday()
#?输出?:?5
- datetime.isocalendar()
返回数组:(年、第多少周、星期几)
d?=?datetime(2019,12,6,13,30,50)
d.isocalendar()
#?输出?:?(2019,?49,?5)
- datetime.ctime()
返回日期时间的字符串表示
d?=?datetime(2019,12,6,13,30,50)
d.ctime()
#?输出?:?'Fri?Dec??6?13:30:50?2019'
- datetime.strftime(date_string, format)
将datetime对象转换为格式化字符串
d?=?datetime.today()
datetime.strftime(d,'%Y-%m-%d?%H:%M:%S')
#?输出?:?'2019-12-09?16:32:18'
- datetime.toordinal()
返回从公元0年到指定datetime的天数
d?=?datetime(2019,12,6,13,30,50)
d.toordinal()
#?输出?:?737399
类实例属性
- datetime.year
返回给定datetime对象的年份
d?=?datetime(2019,12,6,13,30,50)
d.year
#?输出?:?2019
- datetime.month
返回给定datetime对象的月份
d?=?datetime(2019,12,6,13,30,50)
d.month
#?输出?:?12
- datetime.day
返回给定datetime对象的天数(一个月的某天)
d?=?datetime(2019,12,6,13,30,50)
d.day
#?输出?:?6
- datetime.hour
返回给定datetime对象的小时数(一天的某时)
d?=?datetime(2019,12,6,13,30,50)
d.hour
#?输出?:?13
- datetime.minute
返回给定datetime对象的分钟数(一小时的某分)
d?=?datetime(2019,12,6,13,30,50)
d.minute
#?输出?:?30
- datetime.second
返回给定datetime对象的秒数(一分钟的某秒)
d?=?datetime(2019,12,6,13,30,50)
d.second
#?输出?:?50
- datetime.microsecond
返回给定datetime对象的毫秒数(一分钟的某秒)
d?=?datetime(2019,12,6,13,30,50,3000)
d.microsecond
#?输出?:?3000
- datetime.tzinfo
返回datetime对象的时区,前提是在创建datetime对象时需传入tzinfo参数,如果没有传入则返回值为None。
#?获取一个含有时区的datetime对象
import?pytz
sh?=?pytz.timezone('Asia/Shanghai')
d?=?datetime(2018,?11,?1,?hour=8,?tzinfo=sh)
d.tzinfo
#?输出?:?
详情可见:
https://www.jianshu.com/p/7beff16c379d
结论
本文介绍了datetime模块中datetime类的各种方法和属性,代码案例丰富,分门别类,方便使用时查找。