一、time时间模块

import time

1 、时间戳:time.time()

  时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。

  时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

time_stamp = time.time()
print(time_stamp, type(time_stamp)) # 1574923359.1739607 <class 'float'>

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

  格式化的时间字符串(format string):格式化时间表示的是普通的字符串格式的时间。

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)
  • %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 当前时区的名称
  • %% %号本身

3 、结构化时间:time.localtime()

  结构化的时间(struct time):struct_time元组共有9个元素共九个元素,分别为(年,月,日,时,分,秒,一年中第几周(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.localtime() ) # 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.localtime(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.localtime(3600 * 24 * 365) ) # time.struct_time(tm_year=1971, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_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()函数。

1、农历:

安装方法:

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/

19、Python标准库: 日期和时间的更多相关文章

  1. Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解

    datetime 时间和日期模块 datetime 模块提供了以简单和复杂的方式操作日期和时间的类.虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作.该模块还支持可感知时区的 ...

  2. 5.Python3标准库-日期和时间

    ''' 不同于int,str,float,Python没有包含对应日期和时间的原生类型,不过提供了3个相应的模块,可以采用多种表示来管理日期和时间值 time模块由底层C库提供与时间相关的函数.它包含 ...

  3. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  4. Python 标准库一览(Python进阶学习)

    转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...

  5. Python标准库-datatime和time

    Python标准库-datatime和time 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准库datatime 1>.datatime模块 #!/usr/bin/e ...

  6. python标准库00 学习准备

    Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...

  7. Python标准库——走马观花

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一套很有用的标准库(standard library).标准库会随着 ...

  8. Python标准库概览

    Python标准库通常被称为"自带的电池",自然地提供了广泛的功能,涵盖了大概200个左右的包与模块.不断有高质量的包或模块被开发出来,极大的丰富了标准库.但有些模块放在标准库中很 ...

  9. 转--Python标准库之一句话概括

    作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...

随机推荐

  1. web-debug-server

    web-debug-server 项目来自:https://github.com/itzg/web-debug-server 这位大哥的镜像做的很有意思:一个很小的web debug服务器,访问它可以 ...

  2. .Net 如何使用Nlog

    NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net,且配置方式非常简单.通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的调试信息,根据项目需求配置 ...

  3. 另一个角度的redis--redis 可以看做是c/s架构的软件

    Redis 通信协议简单研究 redis 可以看做是c/s架构的软件,再打开一个终端输入下面的指令 https://www.cnblogs.com/nele/p/8908298.html redis ...

  4. - 反编译 AndroidKiller 逆向 实践案例 MD

    目录 目录 反编译 AndroidKiller 逆向 实践案例 MD AndroidKiller 简介 插件升级 基本使用 实践案例 修改清单文件 打印 debug 级别的日志 方式一:直接代理 Lo ...

  5. ASP.NET Core 2.2在中间件内使用有作用域的服务

    服务生存期 为每个注册的服务选择适当的生存期.可以使用以下生存期配置ASP.NET Core服务: 暂时 暂时生存期服务 (AddTransient) 是每次从服务容器进行请求时创建的. 这种生存期适 ...

  6. Beego 学习笔记二:第一个项目

    第一个MVC项目 1>     使用beego命令,创建一个项目 首先切换到创建项目的位置,输入bee new firstweb命令,创建成功之后会出现一个名为firstweb的文件夹 2> ...

  7. 更多企业选择MES系统?这一款功能竟如此强大

    很多制造业企业采用MES系统对制造生产的所有组成部分如订单.加工.质量.物料管理等进行集成,以实现产品生产的全过程管理,满足生产控制的需求,最终实现车间制造管理的信息化. MES系统不仅可以帮助企业提 ...

  8. Kubernetes学习之原理

    Kubernetes基本概念 一.Label selector在kubernetes中的应用场景 1.kube-controller-manager的replicaSet通过定义的label 来筛选要 ...

  9. 分享一篇最近新写的jquery注册页面表单校验的程序,仅供参考

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Emmagee的基本使用

    Emmagee的基本使用 注意:目前最新版本为2.5.1:由于谷歌限制仅支持安卓7.0以下版本: 一.Emmagee介绍 Emmagee是一个简单易上手的Android性能监测工具,主要用于监测单个A ...