热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python3的时间日期处理

1、python3日期和时间Python程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。Python提供了一个time和calendar模块可以用于格式

1、python3日期和时间

Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。

Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。

时间间隔是以秒为单位的浮点小数。

每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。

Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳

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

2、时间元组

很多Python函数用一个元组装起来的9组数字处理时间

字段属性
4位年数tm_year2017
tm_mon1到12
tm_mday1到31
小时tm_hour0到23
分钟tm_min0到59
tm_sec0到61(60或61是润秒)
一周的第几日tm_wday0到6(0是周一)
一年的第几日tm_yday1到366,一年中的第几天
夏令时tm_isdst是否为夏令时,值为1时是夏令时,值为0时不是夏令时,默认为-1

#从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime之类的函数
>>> print(time.localtime(time.time()))
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=40, tm_sec=59, tm_wday=2, tm_yday=291, tm_isdst=0)
#当前时间为:2017年,10月,18日,15时,40分,59秒,星期三,一年中的291天,不是夏令

3、获取格式化的时间

可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime()

>>> import time
>>> print(time.asctime(time.localtime(time.time())))
Wed Oct 18 16:03:24 2017
#wed为星期三,oct为october十月的缩写,18日,时间,年

4、格式化日期

可以使用 time 模块的 strftime 方法来格式化日期

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

>>> import time
>>> print(time.strftime('%Y',time.localtime())) #获取完整年份
2017
>>> print(time.strftime('%y',time.localtime())) #获取简写年份
17
>>> print(time.strftime('%m',time.localtime())) #获取月
10
>>> print(time.strftime('%d',time.localtime())) #获取日
18
>>> print(time.strftime('%Y-%m-%d',time.localtime())) #获取年-月-日
2017-10-18>>> print(time.strftime('%H',time.localtime())) #获取时,24小时制
16
>>> print(time.strftime('%l',time.localtime())) #获取时,12小时制4
>>> print(time.strftime('%M',time.localtime())) #获取分
33
>>> print(time.strftime('%S',time.localtime())) #获取秒
31
>>> print(time.strftime('%H:%M:%S',time.localtime())) #获取时:分:秒
16:34:28>>> print(time.strftime('%a',time.localtime())) #本地简化星期
Wed
>>> print(time.strftime('%A',time.localtime())) #本地完整星期
Wednesday
>>> print(time.strftime('%b',time.localtime())) #本地简化月份
Oct
>>> print(time.strftime('%B',time.localtime())) #本地完整月份
October
>>> print(time.strftime('%c',time.localtime())) #本地日期和时间表示
Wed Oct 18 16:37:46 2017>>> print(time.strftime('%j',time.localtime())) #一年中的第几天
291
>>> print(time.strftime('%p',time.localtime())) #P.M等价符
PM
>>> print(time.strftime('%U',time.localtime())) #一年中的第几个星期,星期天为星期的开始
42
>>> print(time.strftime('%w',time.localtime())) #星期几,星期天为星期的开始
3
>>> print(time.strftime('%W',time.localtime())) #一年中的第几个星期,星期一为星期的开始
42
>>> print(time.strftime('%x',time.localtime())) #本地日期表示
10/18/17
>>> print(time.strftime('%X',time.localtime())) #本地时间表示
17:16:17
>>> print(time.strftime('%Z',time.localtime())) #当前时区
CST
>>> print(time.strftime('%%',time.localtime())) #输出%本身
%>>> print(time.strftime('%Y-%m-%d %H:%M:%S %w-%Z',time.localtime()))
2017-10-18 17:25:39 3-CST #完整日期,时间,星期,时区

5、获取月日历

Calendar模块有很广泛的方法用来处理年历和月历

>>> import calendar
>>> cal=calendar.month(2017,10)
>>> print(cal)October 2017
Mo Tu We Th Fr Sa Su12 3 4 5 6 7 89 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31#calendar.calendar(2017)
#返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。
每日宽度间隔为w字符。
每行长度为21* W+18+2* C。l是每星期行数。
>>> c = calendar.calendar(2017)
>>> print(c)2017January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 1 2 3 4 5 1 2 3 4 52 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 129 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28 27 28 29 30 31
30 31April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 1 2 3 4 5 6 7 1 2 3 43 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
24 25 26 27 28 29 30 29 30 31 26 27 28 29 30July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 1 2 3 4 5 6 1 2 33 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
31October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 1 2 3 4 5 1 2 32 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 109 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
30 31

#calendar.firstweekday返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一。
>>> calendar.firstweekday()
0
#calendar.setfirstweekday设置每周的起始日期码。0(星期一)到6(星期日)。
>>> calendar.setfirstweekday(1)
>>> calendar.firstweekday()
1# calendar.isleap是闰年返回True,否则为false。
>>> calendar.isleap(2017)
False
>>> print(calendar.isleap(2020))
True#calendar.leapdays返回在两年之间的闰年总数,但不包括末年
>>> print(calendar.leapdays(2016,2020))
1
>>> print(calendar.leapdays(2016,2021))
2#calendar.monthcalendar返回一个整数的单层嵌套列表,每个子列表装载代表一个星期,月外的日期设为0
>>> print(calendar.monthcalendar(2017,10))
[[0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0]]
>>> print(calendar.month(2017,10))October 2017
Mo Tu We Th Fr Sa Su12 3 4 5 6 7 89 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31#calendar.monthrange返回两个整数,第一个为该月的首日的星期(0-6),第二个为该月的总天数
>>> print(calendar.monthrange(2017,10))
(6, 31)#calendar.timegm接受一个时间元组形式struct_time,返回该时刻的时间辍(1970纪元后经过的浮点秒数)
>>> print(calendar.timegm((2017,10,19,14,50,0,0,0,0)))
1508424600
>>> print(calendar.timegm((2017,10,19,14,50,50,0,0,0)))
1508424650
>>> print(time.localtime(time.time()))
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=19, tm_hour=14, tm_min=49, tm_sec=44, tm_wday=3, tm_yday=292, tm_isdst=0)#calendar.weekday返回给定日期的星期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
>>> print(calendar.weekday(2017,10,19))
3
>>> print(calendar.weekday(2017,10,20))
4

6、Time模块

Time 模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:

#time.altzone
#返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
>>> import time
>>> print(time.altzone)
-28800#time.asctime([tupletime])
#接受时间元组并返回一个可读的形式为"Thu Oct 19 15:07:31 2017"(2017年10月19日 周四15时07分31秒)的24个字符的字符串。
>>> print(time.asctime(time.localtime()))
Thu Oct 19 15:07:31 2017#time.clock()
#用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
>>> import time
>>> def procedure():
... time.sleep(2.5)
...
>>> t0 = time.clock()
>>> procedure()
>>> print(time.clock() - t0)
0.010000000000000009
>>> print(time.clock() - t0)
0.020000000000000004#time.ctime()作用相当于asctime(localtime(secs)),未给参数相当于asctime()
>>> import time
>>> print(time.ctime())
Thu Oct 19 19:24:24 2017
>>> print(time.asctime(time.localtime()))
Fri Oct 20 11:10:00 2017
>>> print(time.asctime())
Fri Oct 20 11:10:19 2017#time.gmtime()以元组方式返回格林威治时间
>>> print(time.gmtime())
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=3, tm_min=27, tm_sec=30, tm_wday=4, tm_yday=293, tm_isdst=0)#time.localtime()以元组方式返回本地当前时间
>>> print(time.localtime())
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=11, tm_min=30, tm_sec=33, tm_wday=4, tm_yday=293, tm_isdst=0)#time.mktime()将元组时间转换为时间戳
>>> x = time.localtime()
>>> x
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=11, tm_min=32, tm_sec=8, tm_wday=4, tm_yday=293, tm_isdst=0)
>>> time.mktime(x)
1508470328.0#time.strftime(fmt[,tupletime])
#接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
>>> print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
2017-10-20 17:29:08

#time.strptime()
#根据fmt的格式把一个时间字符串解析为时间元组。
>>> print(time.strptime('23 Oct 2017','%d %b %Y'))
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=296, tm_isdst=-1)
>>> print(time.strptime('23 Oct 2017 14 03 00','%d %b %Y %H %M %S'))
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=23, tm_hour=14, tm_min=3, tm_sec=0, tm_wday=0, tm_yday=296, tm_isdst=-1)#time.time
#返回当前时间的时间戳(1970年经过的秒数)
>>> print(time.time())
1508739061.9443805#time.timezone
#是当地时区距离格林威治偏移的秒数
>>> print(time.timezone)
-28800#time.tzname
#输出一个包含一个不包含夏令时的本地时区名称
>>> print(time.tzname)
('CST', 'CST')

7、datetime模块

>>> from datetime import datetime
>>> print(datetime.now())
2017-10-23 14:30:48.971017


转:https://www.cnblogs.com/guixiaoming/p/7927404.html



推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
author-avatar
崔维安
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有