python日期函数库,python标准库datetime

  python日期函数库,python标准库datetime

  本文介绍了Python标准库的日期、时间和日历模块,并通过示例代码对其进行了详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

  

一、time时间模块

  导入时间

  

1 、时间戳:time.time()

  Timestamp: Timestamp表示从1970年1月1日开始以秒计算的偏移量,00:0336000。

  时间戳单元最适合日期操作。但是1970年以前的日期不能用这个来表示。甚至不太远。UNIX和Windows仅支持到2038年。

  time_stamp=time.time()

  print(time_stamp,type(time _ stamp))# 157492359.1739607 class float

  

2、 格式化时间:time.strftime()

  格式化时间字符串:格式化时间表示普通字符串格式的时间。

  format _ time=time . strftime( % Y-% m-% d % X )

  print(format_time,type(format _ time))# 2019-03-07 16:22:11 class str

  #格式为2016-03-20 11:45:39

  print(time . strftime( % Y-% m-% d % h :% m :% S ,time.localtime()))

  python中时间和日期的格式符号:

  %y两位数年份表示(00-99)%Y四位数年份表示(000-9999)%m月(01-12)%d日(0-31)%H 24小时制(0-23)%I 12小时制(01-12)。简化月份名称%B本地完整月份名称%c本地对应日期和时间表示法%j年中的某一天(001-366)%p本地相当于上午或下午%U一年中的周数(00-53)星期日是一周的开始%w周(0-6),星期日是一周的开始。

  结构化时间:struct _ time元组有九个元素,分别是(年、月、日、小时、分钟、秒、一年中的周(0为星期一)、一年中的日、夏令时)。

  UTC时区中的# struct_time:

  print(time . gmtime())# time . struct _ time(TM _ year=2019,tm_mon=11,tm_mday=28,tm_hour=6,tm_min=45,tm_sec=34,tm_wday=3,tm_yday=332,tm_isdst=0)

  当地时区中的# struct_time:

  print(time . local time())# time . struct _ time(TM _ year=2019,tm_mon=11,tm_mday=28,tm_hour=14,tm_min=45,tm_sec=34,tm_wday=3,tm_yday=332,tm_isdst=0)

  #获取当前时间

  print(time.localtime(time.time())

  #结构化时间的基准时间

  print(time . local time(0))# time . struct _ time(TM _ year=1970,tm_mon=1,tm_mday=1,tm_hour=8,tm_min=0,tm_sec=0,tm_wday=3,tm_yday=1,tm_isdst=0)

  #将结构化时间的基准时间增加一年。

  print(time . local time(3600 * 24 * 365))# time . struct _ time(TM _ year=1971,tm_mon=1,tm_mday=1,tm_hour=8,tm_min=0,tm_sec=0,t

  m_wday=4, tm_yday=1, tm_isdst=0)

  

4、 不同格式时间的转换

  

  如上图所示,我们总能通过某些方法在结构化时间-格式化时间-时间戳三者之间进行转换,下面我们将用代码展示如何通过这些方法转换时间格式。

  

# 结构化时间

  now_time = time.localtime()

  print(now_time) # time.struct_time(tm_year=2019, tm_mon=11, tm_mday=28, tm_hour=14, tm_min=51, tm_sec=55, tm_wday=3, tm_yday=332, tm_isdst=0)

  # 把结构化时间转换为时间戳格式

  print(time.mktime(now_time)) # 1574923915.0

  # 把结构化时间转换为格式化时间

  # %Y年-%m月-%d天 %X时分秒=%H时:%M分:%S秒

  print(time.strftime("%Y-%m-%d %X", now_time) ) # 2019-11-28 14:51:55

  # 把格式化时间化为结构化时间,它和strftime()是逆操作

  print(time.strptime(2013-05-20 13:14:52, %Y-%m-%d %X) ) # time.struct_time(tm_year=2013, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=14, tm_sec=52, tm_wday=0, tm_yday=140, tm_isdst=-1)

  

5、 其他用法

  

# 把结构化时间表示为这种形式(24个字符的字符串):Sun Jun 20 23:21:05 1993。

  print(time.asctime() ) # Thu Nov 28 14:51:55 2019

  # 如果没有参数,默认会将time.localtime()作为参数传入。

  print(time.asctime(time.localtime()) ) # Thu Nov 28 14:51:55 2019

  # 把一个时间戳转化为这种形式(24个字符的字符串):Sun Jun 20 23:21:05 1993。

  print(time.ctime() ) # Thu Nov 28 14:51:55 2019

  # 如果参数未给或者为None的时候,默认会将time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

  print(time.ctime(time.time())) # Thu Nov 28 14:51:55 2019

  # 推迟指定的时间运行,单位为秒

  start = time.time()

  time.sleep(3)

  end = time.time()

  print(end-start) #3.0005428791046143

  time.perf_counter() # 返回系统运行时间

  time.process_time() # 返回进程运行时间

  

二、datetime时间加减的模块

  datetime模块可以看成是时间加减的模块

  

import datetime

  

1、用法:

  

import datetime

  import time

  # 返回当前时间

  print(datetime.datetime.now() ) # 2019-11-28 15:02:23.138960

  print(datetime.date.fromtimestamp(time.time()) ) # 2019-11-28

  # 当前时间+3天

  print(datetime.datetime.now() + datetime.timedelta(3) ) # 2019-12-01 15:02:23.138960

  # 当前时间-3天

  print(datetime.datetime.now() + datetime.timedelta(-3)) # 2019-11-25 15:02:23.138960

  # 当前时间-3小时

  print(datetime.datetime.now() + datetime.timedelta(hours=3) ) # 2019-11-28 18:02:23.138960

  # 当前时间+30分钟

  print(datetime.datetime.now() + datetime.timedelta(minutes=30) ) # 2019-11-28 15:32:23.138960

  # 时间替换

  c_time = datetime.datetime.now()

  print(c_time.replace(minute=20, hour=5, second=13)) # 2019-11-28 05:20:13.138960

  

2、常用时间处理方法

  

  • 今天:today = datetime.date.today()
  • 昨天:yesterday = today - datetime.timedelta(days=1)
  • 上个月:last_month = today.month - 1 if today.month - 1 else 12
  • 当前时间戳:time_stamp = time.time()
  • 时间戳转datetime:datetime.datetime.fromtimestamp(time_stamp)
  • datetime转时间戳:int(time.mktime(today.timetuple()))
  • datetime转字符串:today_str = today.strftime("%Y-%m-%d")
  • 字符串转datetime:today = datetime.datetime.strptime(today_str, "%Y-%m-%d")
  • 补时差:today + datetime.timedelta(hours=8)

  

三、Calendar日历模块

  Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:

  

import calendar

  cal = calendar.month(2016, 1)

  print ("以下输出2016年1月份的日历:")

  print (cal)

  以上实例输出结果:

  

以下输出2016年1月份的日历:

   January 2016

  Mo Tu We Th Fr Sa Su

   1 2 3

   4 5 6 7 8 9 10

  11 12 13 14 15 16 17

  18 19 20 21 22 23 24

  25 26 27 28 29 30 31

  星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。

  

农历:

  安装方法:

  pip install sxtwl

  Windows下的二进制安装包:https://pan.baidu.com/s/1VR4MtPVV9iP9SSHNDjKZnQ#list/path=%2Fsxtwl

  

# 引入日历库模块

  import sxtwl

  # 日历中文索引

  ymc = ["十一", "腊", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"]

  rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九",

   "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]

  # 实例化日历库

  lunar = sxtwl.Lunar()

  # 阴历转阳历

  day = lunar.getDayByLunar(2030, 3, 27, False) # 公元前的年可以用负数表示。比如公交前20年就用-20

  print(u"公历:", day.y, u"年", day.m, u"月", day.d, u"日")

  if day.Lleap:

   print(u"阴历:润", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")

  else:

   print(u"阴历:", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")

  # 同理,阳历转阴历

  day = lunar.getDayBySolar(2018, 10, 20)

  print(u"公历:", day.y, u"年", day.m, u"月", day.d, u"日")

  if day.Lleap:

   print(u"阴历:润", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")

  else:

   print(u"阴历:", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")

  更加详细的使用方法请参考:

  https://pypi.org/project/sxtwl/

  到此这篇关于Python标准库之日期、时间和日历模块的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: