#!/usr/bin/env python
# coding:UTF-8
"""
@version: python3.x
@author:曹新健
@contact:
@software: PyCharm
@file: datetime模块.py
@time: 2018/11/15 15:35
"""
import datetime,time
"""
python中的datetime模块提供了五种核心对象:datetime(时间日期类型), date(日期类型),
time(时间类型), tzinfo(时区类型), timedelta(时间差类型)
一、datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
1、在实例化datetime对象时,year, month, day是必填项,hour, minute, second, microsecond(微秒),
tzinfo(时区)是可选项
代码示例:
birthday = datetime.datetime(year=1987,month=4,day=13)
print(birthday)
#打印1987-04-13 00:00:00
2、datetime.datetime.now():返回当前系统时间
3、datetime.datetime.now().date():返回当前日期时间的日期部分
4、datetime.datetime.now().time():返回当前日期时间的时间部分
5、datetime.datetime.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;
datetime.date.today()作用相同
6、datetime.datetime.strftime():由日期格式转化为字符串格式
7、datetime.datetime.strptime():由字符串格式转化为日期格式
代码示例:
print(datetime.datetime(year=1987,month=4,day=13))
#1987-04-13 00:00:00
print(datetime.datetime.now())
#2018-11-15 16:14:17.069494
print(datetime.datetime.fromtimestamp(time.time()))
#2018-11-15 16:14:17.069494
print(datetime.datetime.now().strftime('%Y-%m-%d %X'))
#2018-11-15 16:14:17
print(datetime.datetime.strptime('Apr-20-2018 16:08:08', '%b-%d-%Y %H:%M:%S'))
#2018-04-20 16:08:08
二、datetime.date(year,month,day),返回year-month-day
1、date对象和datetime对象的区别在于,date对象只能表示日期,不能表示时间(即其精确度为天)。
date实例化时须要且仅须要三个参数:year, month, day。date对象是没有时区(tzinfo)属性的。
2、datetime.date.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;
datetime.date.today()作用相同
3、datetime.date.isocalendar():返回格式如(year,month,day)的元组,(2018, 11, 15)
4、datetime.date.isoformat():返回格式如YYYY-MM-DD
5、datetime.date.isoweekday():返回日期的星期
6、datetime.date.replace(year,month,day):替换给定日期,但不改变原日期
7、datetime.date.strftime(format):把日期时间按照给定的format进行格式化
8、datetime.date.timetuple():返回日期对应的time.struct_time对象
9、datetime.date.weekday():返回给定日期的星期(0-6),星期一=0,星期日=6
代码示例:
print(datetime.date.fromtimestamp(time.time()))
#2018-11-15
print(datetime.date.isocalendar(datetime.datetime.now()))
#(2018, 46, 4)
print(datetime.date.isoformat(datetime.datetime.now()))
#2018-11-15
print(datetime.date.isoweekday(datetime.datetime.now()))
#4
print(datetime.date.replace(datetime.datetime.now().date(),2018,10,15))
#2018-10-15
print(datetime.date.strftime(datetime.datetime.now(),"%Y-%m-%d %X"))
#2018-11-15 16:29:28
print(datetime.date.timetuple(datetime.datetime.now()))
#time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=319, tm_isdst=-1)
print(datetime.date.weekday(datetime.datetime.now()))
#3
三、datetime.time(hour,minute,second,microsecond,tzoninfo)
1、和date对象相反,time对象只能用来表示时间,而不能用来表示日期。time对象所表示的时间可以精确到
微秒,而且可以具有时区(tzinfo)属性。
2、datetime.time.replace()
3、datetime.time.strftime(format):按照format格式返回时间
4、datetime.time.tzname():返回时区名字
5、datetime.time.utcoffset():返回时区的时间偏移量
示例代码:
print(datetime.time.replace(datetime.time(16,36,1,1),2,4,5))
#02:04:05.000001
print(datetime.time.strftime(datetime.time(16,36,1,1),"%X"))
#16:36:01
print(datetime.time.tzname(datetime.time(16,36,1,1,datetime.timezone.utc)))
#UTC
print(datetime.time.utcoffset(datetime.time(16,36,1,1,datetime.timezone
(offset=datetime.timedelta(hours=6),name="Asia/Beijing"))))
#6:00:00
四、datetime.datetime.timedelta用于计算两个日期之间的差值
timedelta对象表示一个时间段,timedelta对象可以通过手动实例化得到,也可以通过上述三个对象
(datetime, date, time)相减得到。
手动实例化timedelta时,可以传入的参数有:days, seconds, microseconds, milliseconds, minutes,
hours, weeks
代码示例:
now = datetime.datetime.now()
last = datetime.datetime(year=1987,month=4,day=13,hour=8)
delta = now - last
print(delta)
#11539 days, 8:54:23.708372
五、tzinfo对象
tzinfo对象是用来表示该时区相对UTC时间差值,和该地区是否执行夏时令的对象。datetime模块所提供的
的tzinfo对象是一个抽象基类,也就是说我们不应该直接实例化此对象, 而应该以此类为基类,定义出子
类,然后再实例化以供使用。在子类化的时候,需要自定义很多方法,非常繁琐。还好python提供了一个
pytz的库,里面自带了适合各个国家和时区的tzinfo对象,我们可以直接使用。
"""