牛叔叔 的笔记

好好学习

2020-12-22 09:36

Python时间操作

牛叔叔

Python

(1442)

(0)

收藏

Python中日期时间处理模块有calendar和time还有datetime模块,常用操作如下:


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

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


视频教程参看:http://www.wanmait.com/course/python/4876a169bcb9445aba9b52d12c3908b3.html

time模块

import time  # 引入time模块

ticks = time.time()
print ("当前时间戳为:", ticks)

time.time()返回的是一个浮点数,秒。


使用 time.localtime(time.time())可以把这个时间转换为一个时间元组,元组中的数据为:

序号字段
04位数年2008
11 到 12
21到31
3小时0到23
4分钟0到59
50到61 (60或61 是闰秒)
6一周的第几日0到6 (0是周一)
7一年的第几日1到366 (儒略历)
8夏令时-1, 0, 1, -1是决定是否为夏令时的旗帜(wanmait.com)

struct_time()函数可以通过指定参数构成元组对应的属性为:

time.struct_time(
tm_year=2016, tm_mon=4, tm_mday=7, 
tm_hour=10, tm_min=28, tm_sec=49, 
tm_wday=3, tm_yday=98, tm_isdst=0)
序号属性
0tm_year2008
1tm_mon1 到 12
2tm_mday1 到 31
3tm_hour0 到 23
4tm_min0 到 59
5tm_sec0 到 61 (60或61 是闰秒)
6tm_wday0到6 (0是周一)
7tm_yday一年中的第几天,1 到 366
8tm_isdst是否为夏令时(wanmait.com),值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1


格式化时间函数:

time.asctime( time.localtime(time.time()) )#Tue Dec 22 09:19:09 2020

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #'2020-12-22 09:20:09'

格式化符号:

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

  • %% %号本身


time模块更多函数:

time.perf_counter()# 322.3665765 #返回系统运行时间
time.process_time()#0.125 #返回进程运行时间
time.sleep(secs)#休眠secs秒


time.strptime(str,fmt='%a %b %d %H:%M:%S')#将时间字符串按照指定格式转换成时间元组(wanmait.com) 与time.strftime()函数互逆


Calendar模块

获取日历:

import calendar

cal = calendar.month(2020, 12)
print (cal)

#结果
   December 2020
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.prcal(2020,m=2)
#prcal(year, w=0, l=0, c=6, m=3):
打印一年的日历,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,
内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列

                     2020

      January                   February
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2
 6  7  8  9 10 11 12       3  4  5  6  7  8  9
13 14 15 16 17 18 19      10 11 12 13 14 15 16
20 21 22 23 24 25 26      17 18 19 20 21 22 23
27 28 29 30 31            24 25 26 27 28 29

       March                     April
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1             1  2  3  4  5
 2  3  4  5  6  7  8       6  7  8  9 10 11 12
 9 10 11 12 13 14 15      13 14 15 16 17 18 19
16 17 18 19 20 21 22      20 21 22 23 24 25 26
23 24 25 26 27 28 29      27 28 29 30
30 31

        May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7
 4  5  6  7  8  9 10       8  9 10 11 12 13 14
11 12 13 14 15 16 17      15 16 17 18 19 20 21
18 19 20 21 22 23 24      22 23 24 25 26 27 28
25 26 27 28 29 30 31      29 30

        July                     August
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2
 6  7  8  9 10 11 12       3  4  5  6  7  8  9
13 14 15 16 17 18 19      10 11 12 13 14 15 16
20 21 22 23 24 25 26      17 18 19 20 21 22 23
27 28 29 30 31            24 25 26 27 28 29 30
                          31

     September                  October
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                1  2  3  4
 7  8  9 10 11 12 13       5  6  7  8  9 10 11
14 15 16 17 18 19 20      12 13 14 15 16 17 18
21 22 23 24 25 26 27      19 20 21 22 23 24 25
28 29 30                  26 27 28 29 30 31

      November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1          1  2  3  4  5  6
 2  3  4  5  6  7  8       7  8  9 10 11 12 13
 9 10 11 12 13 14 15      14 15 16 17 18 19 20
16 17 18 19 20 21 22      21 22 23 24 25 26 27
23 24 25 26 27 28 29      28 29 30 31
30




calendar.isleap(year)#判断是否闰年

calendar.leapdays(y1,y2)#返回在Y1,Y2两年之间的闰年总数。

calendar.monthrange(year,month)#返回两个整数。第一个是该月的星期几,第二个是该月有几天。星期几是从0(星期一)到 6(星期日)。

calendar.setfirstweekday(weekday)#设置每周的起始日期码。0(星期一)到6(星期日)。

calendar.weekday(year,month,day)#返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。



datetime模块有关操作

常用时间处理方法

  • 今天 today = datetime.date.today()  #2020-12-22

  • 昨天 yesterday = today - datetime.timedelta(days=1) 

  • 上个月 last_month = today.month - 1 if today.month - 1 else 12

  • 时间戳转datetime datetime.datetime.fromtimestamp(time.time())

  • 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)

视频教程参看:http://www.wanmait.com/course/python/4876a169bcb9445aba9b52d12c3908b3.html


0条评论

点击登录参与评论