datetime笔记

感知型和简单型

  • 感知和简单都是针对时间进行区别的,所以只有datetime和time类具有该属性
  • 感知型:明确政治时间等信息,具有时区信息属性—— tzinfo
  • 简单型:忽略政治时间等信息,简单表示一个时间。
  • tzinfo 对象:会捕获与 UTC 时间的差值、时区名称以及夏令时是否生效等信息

类的关系

 - object
	 - timedelta
	 - tzinfo
		 - timezone
	 - time
	 - date
	 	- datetime

timedelta 类

  • 定义:
    timedelta 对象表示两个 date 或者 time 的时间间隔(datetime是date的子类,包含在timedelta中了)

  • timedelta格式:
    class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
    这些参数可以使int,也可以是float,可以是正数,也可以是负数。

  • timedetla参数转换:
    内部储存时,python会将各参数的值计算转换成days, seconds, microseconds三个参数。

    示例:

from datetime import timedelta
a = timedelta(days = 5, seconds = 20, microseconds = 10, milliseconds = 39000, minutes = 5, hours = 10, weeks = 2)
a

# 返回
datetime.timedelta(days=19, seconds=36359, microseconds=10)
  • 类属性:

    • timedelta.min(最小值):datetime.timedelta(days=-999999999)
    • timedelta.max(最大值):datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
    • timedelta.resolution(最小时间间隔):datetime.timedelta(microseconds=1)
  • timedelta计算:

    • 和date类计算:可以进行加、减法运算。
    • 和timedelta类计算:可进行加、减、除、取整、取余运算。
    • 和int、float数值计算:可进行乘、除运算。
    • 与任意类型均可进行==或!=的布尔运算。

date 类

  • 定义: date类表示了一个包含了年、月、日信息的类。

  • date格式: date(year, month, day)

  • 类属性:

    • date.min(最小值):date(1, 1, 1)
    • date.max(最大值):date(9999, 12, 31)
    • date.resolution(最小间隔):datetime.timedelta(days=1)
    • date.year
    • date.month
    • date.day
  • date计算:

    • 和date类计算:可以进行减法、布尔运算。
    • 和timedetla类计算:可以进行加、减法运算。
  • 实例方法:
    实例方法将一个date格式的日期如(datetime.date(2018, 9, 8))转化为str格式或tuple格式的日期

from datetime import date
# date是类名,a是对date这个类的调用,并输入参数。
a = date(2018,9,8)
a

# 返回
datetime.date(2018, 9, 8)
方法释义示例返回
ctime返回ctime()样式字符串a.ctime()‘Sat Sep 8 00:00:00 2018’
isocalendar返回一个年份,周号,工作日的元组a.isocalendar()(2018, 36, 6)
isoformat返回一个字符串格式的日期a.isoformat()‘2018-09-08’
isoweekday返回日期是星期几(周一返回1)a.isoweekday()6
strftime(“str”)以字符串形式,返回一个指定的日期格式a.strftime(’%Y/%m/%d’)‘2018/09/08’
timetuple返回一个时间元组a.timetuple()time.struct_time(tm_year=2018, tm_mon=9, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=251, tm_isdst=-1)
weekday返回日期是星期几(周一返回0)a.weekday()5
replace(year, month, day)替换一个日期,并根据关键字替换对应参数a.replace(day=1)datetime.date(2018, 9,1)
toordinal返回日期的格里高利序号a.toordinal()736695
  • 类方法:
    将时间戳,字符串等格式的日期,转换为date格式日期
方法释义示例返回
date.today返回本地的当前时间date.today()datetime.date(2020, 8, 4)
date.fromtimestamp ( timestamp)根据给出的时间戳参数,返回一个date日期date.fromtimestamp(1596547490)datetime.date(2020, 8, 4)
date.fromordinal按照格里高利序号,返回一个日期date.fromordinal(a.toordinal())datetime.date(2018, 9, 8)
date.fromisoformat将一个“yyyy-mm-dd”格式转化为日期格式date.fromisoformat(‘2018-09-08’)datetime.date(2018, 9, 8)

time 类

  • 定义: 代表了忽略了日期的本地时间,可以通过tzinfo参数来调整。

  • time格式: time ( hour, minute, second, microsecond, tzinfo, fold)

  • 类属性:

    • time.min(最小值):time(0,0,0)
    • time.max (最大值):time(23,59,59,999999)
    • time.resolution:timedelta(microsecond=1)
  • time计算: time类无法进行算数运算。

  • 实例属性:

    • fold:取值 0或1,用于消除夏令时带来的时间影响。
    • hour
    • microsecond
    • minute
    • second
    • tzinfo:用于描述时区,默认None。
  • 实例方法:
    创建一个time

from datetime import time 
b=time(18,23,45)
b

# 返回
datetime.time(18, 23, 45)
方法释义示例返回
isoformat (timespec)返回一个字符串格式时间b.isoformat()‘18:23:45’
replace ()替换一个时间,并根据关键字替换对应参数(可以通过tzinfo=None将感知型变为简单型)b.replace(14,16,28)datetime.time(14, 16, 28)
strftime返回一个字符串类型的时间b.strftime(’%H-%M-%S’)‘18-23-45’
tzname返回时区的名字print(b.tzname())None
utcoffset返回时区的偏移量print(b.utcoffset())None
  • 实例方法参数

    • replace (hour, minute, second, microsecond, tzinfo, fold)

    • isoformat (timespec)
      timespec可以选择以下内容:

      • 默认auto:返回 HH:MM:SS 格式,如有有microsecond, tzinfo ,fold等参数会有调整。
      • hours:返回 HH 格式
      • minutes:返回 HH:MM 格式
      • seconds:返回 HH:MM:SS 格式
      • milliseconds:返回HH:MM:SS.sss 格式
      • microseconds:返回HH:MM:SS.ffffff 格式

datetime 类

  • 定义: 包含了date 类和time 类所有信息的单一对象。

  • datetime格式: datetime ( year, month, day, hour, minute, second, microsecond, tzinfo)

  • datetime计算:

    • 与datetime类,进行减法计算,返回一个timedelta对象。
    • 与datetime类,进行布尔比较,返回一个布尔值。
    • 与timedelta类,进行加减法计算,返回一个新的datetime对象。
  • 实例属性:

    • date.min(最小值):min = datetime.datetime(1, 1, 1, 0, 0)
    • date.max(最大值):max = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
    • date.resolution(最小间隔):resolution = datetime.timedelta(microseconds=1)
  • 实例属性:

    • year(从date类继承来的)
    • month(从date类继承来的)
    • day(从date类继承来的)
    • hour
    • minute
    • second
    • microsecond
    • fold
    • tzinfo
  • 实例方法:

新建一个datetime对象

from datetime import datetime
dt = datetime(2018,1,1,12,30,30)
dt

# 返回
datetime.datetime(2018, 1, 1, 12, 30, 30)

from datetime import timedelta, timezone
dt1 = datetime (2019,1,1,10,30,30,tzinfo=timezone(timedelta(hours=8)))
dt1

# 返回
datetime.datetime(2019, 1, 1, 10, 30, 30, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
方法释义示例返回
date返回具有相同年、月、日的date对象dt_date = dt.date()datetime.date(2018, 1, 1)
time返回具有相同时、分、秒的time对象dt_time = dt.time()datetime.time(12, 30, 30)
timetz返回具有相同时、分、秒、tzinfo信息的感知性 time 对象dt1_timetz = dt1.timetz()datetime.time(10, 30, 30, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
replace()根据参数数据替换原datetime对象的相应部分dt_replace = dt.replace(day=10,hour=15)datetime.datetime(2018, 1, 10, 15, 30, 30)
astimezone ( tz )返回一个具有新的 tzinfo 属性的datetime对象。tz参数可选dt1_astimezone = dt1.astimezone(tz=timezone(timedelta(hours=4)))atetime.datetime(2019, 1, 1, 6, 30, 30, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
utcoffset返回时区的偏移量dt1_utcoffset = dt1.utcoffset()datetime.timedelta(seconds=28800)
tzname返回tzinfo的名字dt1_tzname = dt1.tzname()‘UTC+08:00’
timetulpe返回一个时间元组dt_timetuple = dt.timetuple()time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=30, tm_sec=30, tm_wday=0, tm_yday=1, tm_isdst=-1)
utctimetuple返回一个对应的UTC时间的时间元组,tm_isdst默认为0dt_utctimetuple = dt1.utctimetuple()time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=2, tm_min=30, tm_sec=30, tm_wday=1, tm_yday=1, tm_isdst=0)
timestamp返回一个时间戳,与tzinfo信息无关dt_timestamp = dt.timestamp()1514781030.0
isoformat (sep, timespec)返回一个ISO 8601 格式表示的日期和时间字符串dt_isoformat = dt.isoformat(sep=" " ,timespec=‘minutes’)‘2018-01-01 12:30’
ctime返回一个表示日期和时间的字符串dt_ctime = dt.ctime()‘Mon Jan 1 12:30:30 2018’
toordinal返回一个格里高利序号dt_toordinal = dt.toordinal()736695
weekday返回周号,周一记做0dt_weekday = dt.weekday()0
isoweekday返回周号,周一记做1dt_isoweekday = dt.isoweekday()1
isocalendar返回一个年份,周号,工作日的元组dt_isocalendar = dt.isocalendar()(2018, 1, 1)
  • 实例方法参数

    • replace ( year, month, day, hour, minute, second, microsecond, tzinfo)
    • isoformat (sep, timespec)
      • sep:默认T,可以修改
      • timespec可以选择以下内容:
        • 默认auto:返回 HH:MM:SS 格式
        • hours:返回 HH 格式
        • minutes:返回 HH:MM 格式
        • seconds:返回 HH:MM:SS 格式
        • milliseconds:返回HH:MM:SS.sss 格式
        • microseconds:返回HH:MM:SS.ffffff 格式
  • 类方法:

方法释义示例返回
today返回本地的当前时间dt= datetime.today()2020-08-10 22:38:06.955231
now ( tzinfo )返回本地的当前时间,tzinfo可选(未指定时和today一样)dt= datetime.now()2020-08-10 22:38:06.955231
utcnow返回当前utc的日期时间dt= datetime.utcnow()2020-08-10 14:38:06.955231
fromtimestamp ( timestamp, tzinfo )将时间戳转换成本地日期和时间(tzinfo参数可选)dt = datetime.fromtimestamp(1293856201.0)datetime.datetime(2011, 1, 1, 12, 30, 1)
utcfromtimestamp ( timestamp )返回utc的datetime,结果为简单型dt = datetime.utcfromtimestamp(1293856201.0)datetime.datetime(2011, 1, 1, 4, 30, 1)
fromordinal ( ordinal )返回格里高利序号对应的日期dt = datetime.fromordinal(735568)datetime.datetime(2014, 12, 1, 0, 0)
fromisoformat (date_string )对 isoformat 进行逆操作,根据规定的字符串格式,返回一个datetime对象dt = datetime.fromisoformat(‘2015-12-01T12:30:30’)datetime.datetime(2015, 12, 1, 12, 30, 30)
combine ( date, time, tzinfo )将日期,时间参数结合成datetime,tzinfo参数可选dt = datetime.combine(date(2015,12,1),time(12,30,30))datetime.datetime(2015, 12, 1, 12, 30, 30)

tzinfo 类

  • 定义: tzinfo是一个抽象的基类,不能直接实例化,需要使用其子类(比如timezone)的实例化对象来获取时区信息。

timezone 类

  • 定义: timezone类是tzinfo的一个子类,它的实例对象,通过计算与utc的时差,来定义一个时区。

  • timezone格式: :timezone ( offset , name)

    • offset:必须是一个timedelta对象,表示本地时间与utc时间的时差。
    • name:参数可选。
  • 实例方法:

from datetime import timezone,timedelta,time
a = timezone(timedelta(hours=8))
b = time (12,35,20,tzinfo=a)
b

# 返回
datetime.time(12, 35, 20, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
方法释义示例返回
utcoffset返回 time / datetime 实例的本地时间与utc的时间间隔b.utcoffset()datetime.timedelta(seconds=28800)
tzname返回time / datetime 实例的utc名称,默认utcb.tzname()‘UTC+08:00’

strftime和strptime

  • 定义:

    • strftime:根据参数,将datetime转化成一个表示日期时间的字符串。
    • strptime:根据表示日期时间的字符串返回一个datetime对象。
  • 比较描述:

strftimestrptime
用法根据参数,将datetime转化成一个字符串将表示日期时间的字符串转化成datetime对象
方法类型实例方法类方法
适用类time、date、datetimedatetime
格式strftime (format)strptime (date_str, format)
  • 参数含义:
指令含义示例
%a星期几的缩写sun,mon,sat
%A星期几的全拼Sunday,Monday
%w以0-6分别表示周一至周日0, 1, …, 6
%u以1-7分别表示周一至周日1, 2, …, 7
%U以两位数形式展示一年周周的序号(周日为第一天)00, 02, …, 53
%W以两位数形式展示一年周周的序号(周一为第一天)00, 02, …, 53
%d以两位数形式表示一月中日的序号01, 02, …, 31
%j以三位数形式表示一年中日的序号001, 002, …, 366
%b月份的缩写Jan, Feb, …, Dec
%B月份的全拼January, February, …, December
%m以两位数展现月份01, 02, …,12
%y以两位数展现年份00, 01, …,99
%Y以四位数展现年份2000, 2001, …,2099
%H以两位数表示24小时制00, 01, …,23
%I以两位数表示12小时制01, 02, …,12
%p本地化的AM,PMAM, PM
%M以两位数显示分钟00, 02, …,59
%S以两位数显示秒数00, 02, …,59
%f以六位数显示微妙000000, 000001, …, 999999
%zUTC 偏移量,(简单型对象则为空字符串)(空), +0000, -0400, +1030
%Z时区名称(空), UTC, EST, CST
%c本地化的适当日期和时间表示Tue Aug 16 21:30:00 1988
%x本地化的适当日期表示08/16/88
%X本地化的适当时间表示21:30:00
%%字面的 ‘%’ 字符%

方法整理

  • 标准格式:(自己命名的)

    • date: date (year, month, day)
    • time: time ( hour, minute, second, microsecond, tzinfo, fold)
    • datetime: datetime ( year, month, day, hour, minute, second, microsecond, tzinfo)
  • 标准格式转字符串:

方法释义示例适用范围
ctime返回ctime()样式字符串a.ctime()date、datetime
isoformat返回一个字符串格式的日期a.isoformat()date、datetime、time
strftime根据参数,将datetime转化成一个字符串strftime (format)date、datetime、time
  • 字符串转标准格式:
方法释义示例适用范围
fromisoformat将一个“yyyy-mm-dd”格式转化为日期格式date.fromisoformat(‘2018-09-08’)date
datetime.fromisoformat (date_string )根据规定的字符串格式,返回一个datetime对象datetime.fromisoformat(‘2015-12-01T12:30:30’)datetime
strptime将表示日期时间的字符串转化成datetime对象strptime (date_str, format)datetime
  • 标准格式转时间戳:
方法释义示例适用范围
timestamp返回一个时间戳,与tzinfo信息无关dt.timestamp()datetime
  • 时间戳转标准格式:
方法释义示例适用范围
date.fromtimestamp ( timestamp)根据给出的时间戳参数,返回一个date日期date.fromtimestamp(1596547490)date
datetime.fromtimestamp ( timestamp, tzinfo )将时间戳转换成本地日期和时间(tzinfo参数可选)datetime.fromtimestamp(1293856201.0)datetime
datetime.utcfromtimestamp ( timestamp )返回utc的datetime,结果为简单型datetime.utcfromtimestamp(1293856201.0)datetime
  • 标准格式转时间元组:
方法释义示例适用范围
timetuple返回一个时间元组a.timetuple()date、datetime
  • 日期其他的信息:
方法释义示例适用范围
date返回具有相同年、月、日的date对象dt.date()datetime
time返回具有相同时、分、秒的time对象dt.time()datetime
timetz返回具有相同时、分、秒、tzinfo信息的感知性 time 对象dt1.timetz()datetime
weekday返回日期是星期几(周一返回0)a.weekday()date、datetime
isoweekday返回日期是星期几(周一返回1)a.isoweekday()date、datetime
isocalendar返回一个年份,周号,工作日的元组a.isocalendar()date、datetime
toordinal返回日期的格里高利序号a.toordinal()date、datetime
  • 时区、偏移信息
方法释义示例适用范围
tzname返回时区的名字print(b.tzname())time、datetime
utcoffset返回时区的偏移量print(b.utcoffset())time、datetime
astimezone ( tz )返回一个具有新的 tzinfo 属性的datetime对象。tz参数可选dt1_astimezonetime、datetime
  • 当前日期时间信息:
方法释义示例适用范围
date.today返回本地的当前时间date.today()date
datetime.today返回本地的当前时间datetime.today()datetime
datetime.now ( tzinfo )返回本地的当前时间,tzinfo可选(未指定时和today一样)datetime.now()datetime
datetime,utcnow返回当前utc的日期时间datetime.utcnow()datetime
  • 其他函数
方法释义示例适用范围
replace()根据参数数据替换原对象的相应部分dt.replace(day=10,hour=15)date、datetime、time
combine ( date, time, tzinfo )将日期,时间参数结合成datetime,tzinfo参数可选datetime.combine(date(2015,12,1),time(12,30,30))datetime
date.fromordinal按照格里高利序号,返回一个日期date.fromordinal(a.toordinal())date
datetime.fromordinal ( ordinal )按照格里高利序号,返回一个日期时间datetime
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值