当前位置:

首页 > 编程开发 > Python标准库之日期、时间和日历模块怎么使用

Python标准库之日期、时间和日历模块怎么使用

一、time时间模块importtime1、时间戳:time.time()时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。time_stamp=time.time()print(time_stamp,type(time_stamp))#1574923359.17396072、格式化时间:time.strftime()格式

本文目录

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

    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 
    
    # 格式化成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、 不同格式时间的转换

    Python标准库之日期、时间和日历模块怎么使用

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

    # 结构化时间
    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下的二进制安装包:

    # 引入日历库模块
    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"日")
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。