1、python3日期和时间

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

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

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

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

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

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

2、时间元组

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

字段 属性
4位年数 tm_year 2017
tm_mon 1到12
tm_mday 1到31
小时 tm_hour 0到23
分钟 tm_min 0到59
tm_sec 0到61(60或61是润秒)
一周的第几日 tm_wday 0到6(0是周一)
一年的第几日 tm_yday 1到366,一年中的第几天
夏令时 tm_isdst 是否为夏令时,值为1时是夏令时,值为0时不是夏令时,默认为-1
  1. #从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime之类的函数
  2. >>> print(time.localtime(time.time()))
  3. 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()

  1. >>> import time
  2. >>> print(time.asctime(time.localtime(time.time())))
  3. Wed Oct 18 16:03:24 2017
  4. #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 当前时区的名称
  • %% %号本身
  1. >>> import time
  2. >>> print(time.strftime('%Y',time.localtime())) #获取完整年份
  3. 2017
  4. >>> print(time.strftime('%y',time.localtime())) #获取简写年份
  5. 17
  6. >>> print(time.strftime('%m',time.localtime())) #获取月
  7. 10
  8. >>> print(time.strftime('%d',time.localtime())) #获取日
  9. 18
  10. >>> print(time.strftime('%Y-%m-%d',time.localtime())) #获取年-月-日
  11. 2017-10-18
  12.  
  13. >>> print(time.strftime('%H',time.localtime())) #获取时,24小时制
  14. 16
  15. >>> print(time.strftime('%l',time.localtime())) #获取时,12小时制
  16. 4
  17. >>> print(time.strftime('%M',time.localtime())) #获取分
  18. 33
  19. >>> print(time.strftime('%S',time.localtime())) #获取秒
  20. 31
  21. >>> print(time.strftime('%H:%M:%S',time.localtime())) #获取时:分:秒
  22. 16:34:28
  23.  
  24. >>> print(time.strftime('%a',time.localtime())) #本地简化星期
  25. Wed
  26. >>> print(time.strftime('%A',time.localtime())) #本地完整星期
  27. Wednesday
  28. >>> print(time.strftime('%b',time.localtime())) #本地简化月份
  29. Oct
  30. >>> print(time.strftime('%B',time.localtime())) #本地完整月份
  31. October
  32. >>> print(time.strftime('%c',time.localtime())) #本地日期和时间表示
  33. Wed Oct 18 16:37:46 2017
  34.  
  35. >>> print(time.strftime('%j',time.localtime())) #一年中的第几天
  36. 291
  37. >>> print(time.strftime('%p',time.localtime())) #P.M等价符
  38. PM
  39. >>> print(time.strftime('%U',time.localtime())) #一年中的第几个星期,星期天为星期的开始
  40. 42
  41. >>> print(time.strftime('%w',time.localtime())) #星期几,星期天为星期的开始
  42. 3
  43. >>> print(time.strftime('%W',time.localtime())) #一年中的第几个星期,星期一为星期的开始
  44. 42
  45. >>> print(time.strftime('%x',time.localtime())) #本地日期表示
  46. 10/18/17
  47. >>> print(time.strftime('%X',time.localtime())) #本地时间表示
  48. 17:16:17
  49. >>> print(time.strftime('%Z',time.localtime())) #当前时区
  50. CST
  51. >>> print(time.strftime('%%',time.localtime())) #输出%本身
  52. %
  53.  
  54. >>> print(time.strftime('%Y-%m-%d %H:%M:%S %w-%Z',time.localtime()))
  55. 2017-10-18 17:25:39 3-CST #完整日期,时间,星期,时区

5、获取月日历

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

  1. >>> import calendar
  2. >>> cal=calendar.month(2017,10)
  3. >>> print(cal)
  4. October 2017
  5. Mo Tu We Th Fr Sa Su
  6. 1
  7. 2 3 4 5 6 7 8
  8. 9 10 11 12 13 14 15
  9. 16 17 18 19 20 21 22
  10. 23 24 25 26 27 28 29
  11. 30 31
  12.  
  13. #calendar.calendar(2017)
  14. #返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。
  15. 每日宽度间隔为w字符。
  16. 每行长度为21* W+18+2* Cl是每星期行数。
  17. >>> c = calendar.calendar(2017)
  18. >>> print(c)
  19. 2017
  20.  
  21. January February March
  22. Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
  23. 1 1 2 3 4 5 1 2 3 4 5
  24. 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
  25. 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
  26. 16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
  27. 23 24 25 26 27 28 29 27 28 27 28 29 30 31
  28. 30 31
  29.  
  30. April May June
  31. Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
  32. 1 2 1 2 3 4 5 6 7 1 2 3 4
  33. 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
  34. 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
  35. 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
  36. 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
  37.  
  38. July August September
  39. Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
  40. 1 2 1 2 3 4 5 6 1 2 3
  41. 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
  42. 10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
  43. 17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
  44. 24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
  45. 31
  46.  
  47. October November December
  48. Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
  49. 1 1 2 3 4 5 1 2 3
  50. 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
  51. 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
  52. 16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
  53. 23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
  54. 30 31
  1. #calendar.firstweekday返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一。
  2. >>> calendar.firstweekday()
  3. 0
  4. #calendar.setfirstweekday设置每周的起始日期码。0(星期一)到6(星期日)。
  5. >>> calendar.setfirstweekday(1)
  6. >>> calendar.firstweekday()
  7. 1
  8.  
  9. # calendar.isleap是闰年返回True,否则为false。
  10. >>> calendar.isleap(2017)
  11. False
  12. >>> print(calendar.isleap(2020))
  13. True
  14.  
  15. #calendar.leapdays返回在两年之间的闰年总数,但不包括末年
  16. >>> print(calendar.leapdays(2016,2020))
  17. 1
  18. >>> print(calendar.leapdays(2016,2021))
  19. 2
  20.  
  21. #calendar.monthcalendar返回一个整数的单层嵌套列表,每个子列表装载代表一个星期,月外的日期设为0
  22. >>> print(calendar.monthcalendar(2017,10))
  23. [[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]]
  24. >>> print(calendar.month(2017,10))
  25. October 2017
  26. Mo Tu We Th Fr Sa Su
  27. 1
  28. 2 3 4 5 6 7 8
  29. 9 10 11 12 13 14 15
  30. 16 17 18 19 20 21 22
  31. 23 24 25 26 27 28 29
  32. 30 31
  33.  
  34. #calendar.monthrange返回两个整数,第一个为该月的首日的星期(0-6),第二个为该月的总天数
  35. >>> print(calendar.monthrange(2017,10))
  36. (6, 31)
  37.  
  38. #calendar.timegm接受一个时间元组形式struct_time,返回该时刻的时间辍(1970纪元后经过的浮点秒数)
  39. >>> print(calendar.timegm((2017,10,19,14,50,0,0,0,0)))
  40. 1508424600
  41. >>> print(calendar.timegm((2017,10,19,14,50,50,0,0,0)))
  42. 1508424650
  43. >>> print(time.localtime(time.time()))
  44. 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)
  45.  
  46. #calendar.weekday返回给定日期的星期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
  47. >>> print(calendar.weekday(2017,10,19))
  48. 3
  49. >>> print(calendar.weekday(2017,10,20))
  50. 4

6、Time模块

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

  1. #time.altzone
  2. #返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
  3. >>> import time
  4. >>> print(time.altzone)
  5. -28800
  6.  
  7. #time.asctime([tupletime])
  8. #接受时间元组并返回一个可读的形式为"Thu Oct 19 15:07:31 2017"(2017年10月19日 周四15时07分31秒)的24个字符的字符串。
  9. >>> print(time.asctime(time.localtime()))
  10. Thu Oct 19 15:07:31 2017
  11.  
  12. #time.clock()
  13. #用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
  14. >>> import time
  15. >>> def procedure():
  16. ... time.sleep(2.5)
  17. ...
  18. >>> t0 = time.clock()
  19. >>> procedure()
  20. >>> print(time.clock() - t0)
  21. 0.010000000000000009
  22. >>> print(time.clock() - t0)
  23. 0.020000000000000004
  24.  
  25. #time.ctime()作用相当于asctime(localtime(secs)),未给参数相当于asctime()
  26. >>> import time
  27. >>> print(time.ctime())
  28. Thu Oct 19 19:24:24 2017
  29. >>> print(time.asctime(time.localtime()))
  30. Fri Oct 20 11:10:00 2017
  31. >>> print(time.asctime())
  32. Fri Oct 20 11:10:19 2017
  33.  
  34. #time.gmtime()以元组方式返回格林威治时间
  35. >>> print(time.gmtime())
  36. 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)
  37.  
  38. #time.localtime()以元组方式返回本地当前时间
  39. >>> print(time.localtime())
  40. 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)
  41.  
  42. #time.mktime()将元组时间转换为时间戳
  43. >>> x = time.localtime()
  44. >>> x
  45. 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)
  46. >>> time.mktime(x)
  47. 1508470328.0
  48.  
  49. #time.strftime(fmt[,tupletime])
  50. #接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
  51. >>> print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
  52. 2017-10-20 17:29:08
  1. #time.strptime()
  2. #根据fmt的格式把一个时间字符串解析为时间元组。
  3. >>> print(time.strptime('23 Oct 2017','%d %b %Y'))
  4. 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)
  5. >>> print(time.strptime('23 Oct 2017 14 03 00','%d %b %Y %H %M %S'))
  6. 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)
  7.  
  8. #time.time
  9. #返回当前时间的时间戳(1970年经过的秒数)
  10. >>> print(time.time())
  11. 1508739061.9443805
  12.  
  13. #time.timezone
  14. #是当地时区距离格林威治偏移的秒数
  15. >>> print(time.timezone)
  16. -28800
  17.  
  18. #time.tzname
  19. #输出一个包含一个不包含夏令时的本地时区名称
  20. >>> print(time.tzname)
  21. ('CST', 'CST')

7、datetime模块

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

python3的时间日期处理的更多相关文章

  1. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  2. Python3入门(十三)——常用内置模块之时间日期模块datatime

    1.日期时间模块——datatime //其他模块例如time.calender等模块暂不展开 (1)获取当前时间:datatime.now(): from datetime import datet ...

  3. Python3.x:日期库dateutil简介

    Python3.x:日期库dateutil简介 安装 pip install python-dateutil 关于parser #字符串可以很随意,可以用时间日期的英文单词,可以用横线.逗号.空格等做 ...

  4. Python3之时间模块time & datetime & calendar

    一. 简介 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多python函数用一个元组装起来的9组数字处理时间. python中时间日期格式化符号: %y 两位 ...

  5. Python3之时间模块详述

    Python3之时间模块  time & datetime & calendar 一. 概述 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多p ...

  6. python之时间日期time

    常用的时间函数如下获取当前日期:time.time()获取元组形式的时间戳:time.local(time.time())格式化日期的函数(基于元组的形式进行格式化):time.asctime(tim ...

  7. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  8. MySQL学习记录--生成时间日期数据

    时间数据格式组件: 组件 定义 范围 YYYY 年份,包括世纪 1000~9999 MM 月份 01(January)~12(December) DD 日 01~31 HH 小时 00~23 HHH ...

  9. SQL-数学、字符串、时间日期函数和类型转换

    --数学函数 --ABS绝对值,select ABS(-99)--ceiling取上限,select CEILING(4.5)--floor去下限select FLOOR(4.5)--power 几次 ...

随机推荐

  1. PS如何为图片添加四面投影

    如图所示,像四周的投影 很像Areo效果的Windows7. 用这样的图片做成PNG透明的效果非常好. 我们不妨仔细研究上图的两个角,发现其实只是简单的投影效果而已. 简单的使用投影效果即可.注意混合 ...

  2. sql NextResult()多个结果集

    转自  http://blog.csdn.net/limlimlim/article/details/8626898 注意:当SQL语句中出现两条Select语句,例如:string sql = &q ...

  3. python数据类型整理

    Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) 序列中的每个元素都有自己的编 ...

  4. shell 命令行语句

    第一步:ssh免密码登陆[用公钥,私钥] 第二步: #!/bin/bash while read server;do ssh -n $server >& |sed "s/^/$ ...

  5. dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)

    一.源代码路径 https://github.com/weiganyi/dr-helper 二.界面 通过浏览器訪问Web服务,能够看到界面例如以下: ADT-Bundle编译project生成dr- ...

  6. angular中使用daterangepicker完全能用版

    angular版本:angular5 先看效果图: 最新版是这样的: 附上插件的网址: http://www.daterangepicker.com/ 1 安装: daterangepicker依赖于 ...

  7. 排序算法 C++代码实现

    插入排序: 就像摸牌,摸一张插进去,找一个哨兵.从第二个開始,和前一个比較.小的话前移一位. #include <iostream> #include<stdlib.h> us ...

  8. ThinkPad E430C从待机状态恢复后,无线网络就不可用了

    奇妙的问题,ThinkPad E430C从待机状态恢复后.无线网络就不可用了. Windows7系统.按Fn+F8或F7能够调节屏幕亮度,可是F9+Fn也没反应. 把驱动卸载了又一次安装了也无论用,W ...

  9. iOS GCD不同场景的使用比較

    /**  *  async -- 并发队列  * 会创建线程.一般同一时候开多条  * 并发运行任务  */ <span style="font-size:14px;"> ...

  10. CentOS yum 命令出现 [Errno 14] curl#6 - &quot;Couldn&#39;t resolve host ...&quot; 的解决方法

    安装svn的时候,发现报错说一个地址无法訪问. # yum list | grep subversion http://opensource.wandisco.com/centos/7/svn-1.8 ...