Python标准库之日期、时间和日历模块

一、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()函数。

农历:

安装方法:

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标准库之日期、时间和日历模块的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python arrow 更好的日期时间模块

    目录 arrow模块的使用 获取arrow对象 时间形式转换 获取数据 修改时间 总结 Python中有很多时间和日期处理的库,有time.datetime等,虽然提供了很完整的对日期.时间以及时区转换处理的功能,但是方法过多,不易于记忆,而且经常需要各种转换操作,非常繁琐,比如时间和时间戳的转换,格式化时间字符串转换等等,几乎每次使用都要先看一下教程文档.那么有没有使用起来更人性化的日期时间处理库呢?接下来就来看一下arrow日期时间库. arrow是一个专门处理时间和日期的轻量级Python

  • Python日期时间Time模块实例详解

    本文实例讲述了Python日期时间Time模块.分享给大家供大家参考,具体如下: 关于时间和日期模块 python程序能用很多方式处理日期和时间,转换日期格式是一种常见的功能. python提供了一个time和calendar模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. python的time模块下有很多函数可以转换常见的日期格式. Time模块 1.1 名词解释 UTC :格林威治天文时间,世界标准时间,

  • Python日期时间模块arrow的具体使用

    目录 arrow模块的使用 获取arrow对象 获取当前时间 时间形式转换 转换成时间字符串 转换成时间戳 获取数据 修改时间 将字符串转换为arrow对象    arrow.get(string[,format_string]) 获取datetime对象的值 时间推移    a.shift(**kwargs) 时间替换   a.replace(**kwargs) 格式化输出    a.format([format_string]) 最牛的是这个人性化输出    a.humanize() Pyt

  • Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码

    python中的datetime模块提供了操作日期和时间功能,该模块提供了五种核心对象:datetime时间日期类型,date日期类型,time时间类型,tzinfo时区类型,timedelta时间差类型,今天为大家介绍一下datetime模块的具体使用方法与python日期时间计算与比较的相关实例 一.Python中日期时间模块datetime介绍 (一).datetime模块中包含如下类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间对象

  • Python之日期与时间处理模块(date和datetime)

    前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算某个功能的执行时间 用日期命名一个日志文件的名称 记录或展示某文章的发布或修改时间 其他 Python中提供了多个用于对日期和时间进行操作的内置模块:time模块.datetime模块和calendar模块.其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致.time模块相比,datetime模块提供的接口更直观.易用,功能也更加强大.

  • Python标准库之日期、时间和日历模块

    一.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

  • Python标准库datetime之datetime模块用法分析详解

    目录 1.日期时间对象 2.创建日期时间对象 2.1.通过datetime.datetime.utcnow()创建 2.2.通过datetime.datetime.today()函数创建 2.3.通过datetime.datetime.now()创建 2.4.通过datetime.datetime()创建 2.5.查看创建的对象 2.6.查看datetime可以处理的最大的日期时间对象及最小的日期时间对象 3.日期事件对象的属性 4.日期时间对象转换为时间元组 5.将日期时间对象转化为公元历开始

  • C站最全Python标准库总结,你想要的都在这里

    python标准库思维导图: 1.操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python34' >>> os.chdir('/server/accesslogs') # 修改当前的工作目录 >>> os.system('mkdir today') # 执行系统命令 mkdir 0 建议使用 "import os&qu

  • Python标准库calendar的使用方法

    目录 Calendar calendar.Calendar(firstweekday=0)类 calendar.TextCalendar(firstweekday=0) calendar.HTMLCalendar(firstweekday=0)  此模块允许你输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能.值得注意的是,默认情况下,这些日历将星期一作为一周的第一天,将星期日作为一周的最后一天(欧洲惯例).不过,我们可以使用setfirstweekday()方法来设置一周的第一

  • 200个Python 标准库总结

    目录 1.文本 2.数学 3.函数式编程 4.文件与目录 5.持久化 6.压缩 7.加密 8.操作系统工具 9.并发 10.进程间通信 11.互联网 12.互联网协议与支持 13.多媒体 14.国际化 15.编程框架 16.Tk图形用户接口 17.开发工具 18.调试 19.运行时 20.解释器 21.导入模块 22.Python语言 23.其他 24.Windows相关 25.Unix相关 1.文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwr

  • Python标准库time使用方式详解

    目录 1.time库 1.1.获取格林威治西部的夏令时地区的偏移秒数 1.2.时间函数 1.3.格式化时间.日期 1.4.单调时钟 1.time库 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 结构化时间(struct_time)方式:struct_time元组共有9个元素 格式化的时间字符串(format_string),时间格式的字符串 1.1.获取格林威治西部的夏令时地区的偏移秒数 如果该地区在格林威治东部会返回负值(

  • Python标准库datetime date模块的详细介绍

    目录 前言 1.定义 1.2.常见错误 2.date类常用的函数 2.1.获取当期日期 2.2.格式化日期 2.2.1.ctime() 2.2.2.datetime.date对象 2.2.3.replace(self, year=None, month=None, day=None) 2.2.4.格式化日期 2.3.ISO标准格式日期 2.3.1.获取符合ISO标准格式的日期字符串的星期几(1~7) 2.3.2.返回日期或者时间对象的星期几(0~6) 2.3.3.根据时间戳计算日期 2.3.4.

  • 使用Python标准库中的wave模块绘制乐谱的简单教程

    在本文中,我们将探讨一种简洁的方式,以此来可视化你的MP3音乐收藏.此方法最终的结果将是一个映射你所有歌曲的正六边形网格地图,其中相似的音轨将处于相邻的位置.不同区域的颜色对应不同的音乐流派(例如:古典.嘻哈.重摇滚).举个例子来说,下面是我所收藏音乐中三张专辑的映射图:Paganini的<Violin Caprices>.Eminem的<The Eminem Show>和Coldplay的<X&Y>. 为了让它更加有趣(在某些情况下更简单),我强加了一些限制.

  • 如何使用Python标准库进行性能测试

    Profile 和 cProfile 在 Python 标准库里面有两个模块可以用来做性能测试. 1. 一个是 Profile,它是一个纯 Python 的实现,所以会慢一些,如果你需要对模块进行拓展,那么这个模块比较合适. 2. 第二个是 cProfile,从名字就可以看出这是一个 C 语言的实现版,官方推荐在大多数情况下使用. 这两者的接口和数据的输出格式是完全一样的,你可以在这两者之间自由的切换,所以下面我们仅以 cProfile 为例进行介绍. 使用 cProfile 进行性能测试 在

  • Python标准库shutil用法实例详解

    本文实例讲述了Python标准库shutil用法.分享给大家供大家参考,具体如下: shutil模块提供了许多关于文件和文件集合的高级操作,特别提供了支持文件复制和删除的功能. 文件夹与文件操作 copyfileobj(fsrc, fdst, length=16*1024): 将fsrc文件内容复制至fdst文件,length为fsrc每次读取的长度,用做缓冲区大小 fsrc: 源文件 fdst: 复制至fdst文件 length: 缓冲区大小,即fsrc每次读取的长度 import shuti

随机推荐