当前位置:   article > 正文

python time库 datetime库_python datetime timedelta

python datetime timedelta

目录

 

Python 日期和时间 | 菜鸟教程

Time

获取时间:

格式化时间:strftime(tpl,ts)

将格式化字符串转换为时间戳strptime(str,tpl)

计时器功能

 datetime

date类

time类

datetime类

timedelta类


Python 日期和时间 | 菜鸟教程

Python 处理日期与时间的全面总结(7000字)

80 个例子,彻底掌握Python日期时间处理!

Time

获取时间

1.11.获取当前时间戳

时间戳:当前系统中表示时间的一个浮点数

  1. import time
  2. time.time() #获取当前时间戳(计算机内部时间)
  3. # 1643336568.9237003

日期范围:1970-2038,超过此范围应该使用datetime模块

表示从1970.1.1. 0:0开始到当前时刻的秒数

1970年之前的日期无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

1.2 获取当前时间,返回字符串

可基于时间戳进行转换

  1. time.ctime()
  2. #'Fri Jan 28 10:27:03 2022'
  3. #可以传入时间戳格式时间,用来做转化
  4. import time
  5. timestamp = time.time()
  6. timestr = time.ctime(timestamp)
  7. timestr
  8. #'Sat Jan 29 15:21:48 2022'

2.1.获取当前时间,返回计算机程序可以处理的时间格式:struct_time形式

  • localtime() 返回当前时间的struct_time形式,可传入时间戳格式时间,用来做转化

  • gmtime() 返回当前时间的struct_time形式,UTC时区(0时区) ,可传入时间戳格式时间,用来做转化

  1. time.gmtime()
  2. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, tm_hour=7, tm_min=34, tm_sec=50, tm_wday=5, tm_yday=29, tm_isdst=0)
  3. time.localtime()
  4. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, tm_hour=15, tm_min=34, tm_sec=21, tm_wday=5, tm_yday=29, tm_isdst=0)

struct_time元组——时间元组

2.3 时间戳→时间元组

时间戳→时间元组:将时间戳浮点数传递给gmtime函数

  1. # 可传入时间戳格式时间,用来做转化
  2. time.gmtime(time.time())
  3. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, tm_hour=7, tm_min=29, tm_sec=34, tm_wday=5, tm_yday=29, tm_isdst=0)

时间戳→时间元组:将时间戳浮点数传递给localtime函数

  1. localtime = time.localtime(time.time())
  2. localtime
  3. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=28, tm_hour=10, tm_min=48, tm_sec=35, #tm_wday=4, tm_yday=28, tm_isdst=0)

2.4 时间元组→时间戳

  1. time.mktime(time.localtime())
  2. #1643441791.0
  3. time.mktime(time.gmtime())
  4. #1643413005.0

 2.2  asctime() 返回字符串形式的时间

可基于时间元组获取易读的格式化当前时间

  1. time.asctime()
  2. #'Sat Jan 29 15:27:43 2022'
  3. #asctime() 返回字符串形式的时间,可以传入struct_time形式时间,用来做转化
  4. time.asctime(localtime)
  5. #'Fri Jan 28 10:48:35 2022'
  6. time.asctime(time.gmtime())
  7. 'Sat Jan 29 07:24:00 2022'

格式化时间:strftime(tpl,ts)

tpl:定义输出效果

ts:struct_time元组

  1. # 格式化成2022-01-28 03:04:00形式
  2. time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
  3. #'2022-01-28 03:04:00'
  4. # 格式化成Fri Jan 28 03:07:14形式
  5. time.strftime("%a %b %d %H:%M:%S",time.gmtime())
  6. #'Fri Jan 28 03:07:14'

将格式化字符串转换为时间戳strptime(str,tpl)

str:字符串形式的时间值

tpl:定义输入效果

  1. timestr = '2022-01-28 03:04:00'
  2. time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
  3. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=28, tm_hour=3, tm_min=4, tm_sec=0, #tm_wday=4, tm_yday=28, tm_isdst=-1)

python中时间日期格式化符号:

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(01-12)
  • %M 分钟数(00-59)
  • %S 秒(00-59)
  • %a 本地简化星期名称
  • %A 本地完整星期名称
  • %b 本地简化的月份名称
  • %B 本地完整的月份名称
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年中的星期数(00-53)星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

计时器功能

 datetime

包括的类:

  • date:表示日期的类。常用的属性有year, month, day

  • time:表示时间的类。常用的属性有hour, minute, second, microsecond

  • datetime:表示日期时间

  • timedelta:表示时间间隔,即两个时间点之间的长度

  • tzinfo:与时区有关的相关信息

均为不可变对象

date类

表示日期的类

常用类方法类属性

  • max、min:date对象所能表示的最大、最小日期

  • resolution:date对象表示日期的最小单位。这里是天

  • today():返回一个表示当前本地日期的date对象

  • fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象

  • fromordinal(ordinal):将Gregorian日历时间转换为date对象(特殊历法用不上)

    1. import time
    2. from datetime import date
    3. date.max
    4. #datetime.date(9999, 12, 31)
    5. date.min
    6. #datetime.date(1, 1, 1)
    7. date.resolution
    8. #datetime.timedelta(days=1)
    9. date.today()
    10. #datetime.date(2022, 1, 29)
    11. date.fromtimestamp(time.time())
    12. #datetime.date(2022, 1, 29)

    实例方法和属性:

  • .year:返回年

  • .month:返回月

  • .day:返回日

  • .replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

  • .weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推

  • .isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推

  • .isocalendar():返回格式如(year, wk num, wk day)

  • .isoformat():返回格式如’YYYY-MM-DD’的字符串

  • .strftime(fmt):自定义格式化字符串。与time模块中的strftime类似。

  • .toordinal():返回日期对应的Gregorian Calendar日期

  1. today = date.fromtimestamp(time.time())#today存储了一个类对象
  2. today.year
  3. #2022
  4. today.month
  5. #1
  6. today.day
  7. #29
  8. lastyear_today = today.replace(2020,1,29)
  9. #lastyear_today
  10. #datetime.date(2020, 1, 29)
  11. lastyear_today.weekday()
  12. #2
  13. lastyear_today.isoweekday()
  14. #3
  15. lastyear_today.isocalendar()
  16. #datetime.IsoCalendarDate(year=2020, week=5, weekday=3)
  17. lastyear_today.isoformat()
  18. #'2020-01-29'
  19. lastyear_today.strftime("%Y-%m-%d %H:%M:%S")
  20. #'2020-01-29 00:00:00'
  21. lastyear_today.toordinal()
  22. #737453

time类

类属性和方法:

  • min、max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999)

  • resolution:时间的最小单位,这里是1微秒

  1. from datetime import time
  2. time.min
  3. datetime.time(0, 0)
  4. time.max
  5. datetime.time(23, 59, 59, 999999)
  6. time.resolution
  7. datetime.timedelta(microseconds=1)

实例方法和属性:

  • .hour、.minute、.second、.microsecond:时、分、秒、微秒

  • .tzinfo:时区信息

  • .replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

  • .isoformat():返回型如”HH:MM:SS”格式的字符串表示;

  • .strftime(fmt):返回自定义格式化字符串。

  1. time()#time类的构造函数
  2. datetime.time(0, 0)
  3. myTime = time(22)
  4. myTime.hour
  5. #22
  6. myTime.minute
  7. #0
  8. myTime.second
  9. #0
  10. myTime.microsecond
  11. #0
  12. nextime = myTime.replace(22,30)
  13. #nextime.isoformat()
  14. '22:30:00'
  15. #nextime.strftime("%Y-%m-%d %H:%M:%S")
  16. '1900-01-01 22:30:00'

datetime类

date与time的结合体,包括date与time的所有信息

类属性与方法:

  • min、max:datetime所能表示的最小值与最大值;

  • resolution:datetime最小单位;

  • today():返回一个表示当前本地时间的datetime对象;

  • now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

  • utcnow():返回一个当前utc时间的datetime对象;

  • fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;

  • utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;

  • combine(date, time):根据date和time,创建一个datetime对象;

  • strptime(date_string, format):将格式字符串转换为datetime对象;

  1. import datetime
  2. datetime.datetime(1970,1,29,1,1,1,1)#构造函数
  3. datetime.datetime.max
  4. #datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
  5. datetime.datetime.min
  6. #datetime.datetime(1, 1, 1, 0, 0)
  7. datetime.datetime.resolution
  8. #datetime.timedelta(microseconds=1)
  9. datetime.datetime.today()#返回一个表示当前本地时间的datetime对象
  10. #datetime.datetime(2022, 1, 29, 17, 50, 13, 688511)
  11. datetime.datetime.now()
  12. #datetime.datetime(2022, 1, 29, 17, 50, 30, 577492)
  13. datetime.datetime.utcnow()
  14. #datetime.datetime(2022, 1, 29, 9, 50, 43, 658491)
  15. import time
  16. datetime.datetime.fromtimestamp(time.time())
  17. #datetime.datetime(2022, 1, 29, 17, 51, 20, 359494)
  18. datetime.datetime.utcfromtimestamp(time.time())
  19. #datetime.datetime(2022, 1, 29, 9, 51, 35, 160494)
  20. mydate = datetime.date.today()
  21. mytime = datetime.time(22,30,30)
  22. mydatetime = datetime.datetime.combine(mydate,mytime)
  23. timestr = '2022-01-28 03:04:00'
  24. lastdate = datetime.datetime.strptime(timestr,"%Y-%m-%d %H:%M:%S")

实例方法与属性:

  1. today = datetime.datetime.today()#返回一个表示当前本地时间的datetime对象
  2. today.year
  3. #2022
  4. today.month
  5. #1
  6. today.day
  7. #29
  8. today.hour
  9. #18
  10. today.minute
  11. #2
  12. today.second
  13. #50
  14. today.microsecond
  15. #431511
  16. mydate = today.date()#获取date对象
  17. mytime = today.time()#获取time对象
  18. today.replace(2020,1,29,18,5)
  19. #datetime.datetime(2020, 1, 29, 18, 5, 50, 431511)
  20. today.timetuple()
  21. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, #tm_hour=18, tm_min=2, tm_sec=50, tm_wday=5, tm_yday=29, tm_isdst=-1)
  22. today.utctimetuple()
  23. #time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, #tm_hour=18, tm_min=2, tm_sec=50, tm_wday=5, tm_yday=29, tm_isdst=0)
  24. today.toordinal()
  25. #738184
  26. today.weekday()
  27. #5
  28. today.isocalendar()
  29. datetime.IsoCalendarDate(year=2022, week=4, weekday=6)
  30. today.isoformat()
  31. #'2022-01-29T18:02:50.431511'
  32. today.ctime()
  33. #'Sat Jan 29 18:02:50 2022'
  34. today.strftime("%Y-%m-%d %H:%M:%S")
  35. #'2022-01-29 18:02:50'

timedelta类

时间间隔对象

构造函数:

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

1.没有必填参数

2.两个时间间隔对象可以彼此之间相加或相减

3.一个datetime对象减去一个时间间隔对象,返回对应减去之后的datetime对象

4.两个datetime对象相减返回的是一个时间间隔对象

5.对date,time同样适用

  1. delta1 = datetime.timedelta(days=1)
  2. today = datetime.datetime.today()
  3. yesterday = today - delta1
  4. #yesterday
  5. datetime.datetime(2022, 1, 28, 20, 24, 7, 609998)
  6. delta2 = datetime.timedelta(days=2)
  7. delta3 = delta1 + delta2
  8. #threeDaysago = today - delta3
  9. threeDaysago
  10. datetime.datetime(2022, 1, 26, 20, 24, 7, 609998)
  11. yearsago = datetime.datetime(1970,1,29)
  12. today = datetime.datetime.today()
  13. dalte1 = today - yearsago
  14. dalte1
  15. #datetime.timedelta(days=18993, seconds=73770, microseconds=59842)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/417006
推荐阅读
相关标签
  

闽ICP备14008679号