常用模块

1 time 模块

1.1 Python中时间的表示方式

在Python中,通常有这几种方式来表示时间:

  • 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
  • 格式化的时间字符串(Format String)
  • 结构化的时间(struct_time):也被称作 时间元祖 struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

1.2 获取各种形式的时间

time模块的方法

import time
# 我们先以当前时间为准,让大家快速认识三种形式的时间
print(time.time())                     # 时间戳:1487130156.419527
print(time.strftime("%Y-%m-%d %X")) #格式化的时间字符串:'2017-02-15 11:40:53'

print(time.localtime())             #本地时区的struct_time
print(time.gmtime())                #UTC时区的struct_time

时间日期格式化符号

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

struct_time 结构

序号 属性
0 tm_year 2008
1 tm_mon 1 到 12
2 tm_mday 1 到 31
3 tm_hour 0 到 23
4 tm_min 0 到 59
5 tm_sec 0 到 61 (60或61 是闰秒)
6 tm_wday 0到6 (0是周一)
7 tm_yday 1 到 366(儒略历)
8 tm_isdst -1, 0, 1, -1是决定是否为夏令时的旗帜

1.3 各种形式的时间 之间的转换

时间戳 转为 结构化时间

  • time.localtime()
  • time.gmtime()
# time.localtime([secs])
# 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
time.localtime()
time.localtime(1473525444.037215) 

# time.gmtime([secs])
# gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。secs参数未提供,则以当前时间为准。
time.gmtime()
time.gmtime(1473525444.037215)

时间戳 转为 格式化时间(注意)

  • time.ctime()
# ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
# None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
time.ctime()                      # Sun Sep 11 00:46:38 2016
time.ctime(time.time())            # Sun Sep 11 00:46:38 2016

结构化时间 转为 时间戳

  • time.mktime()
# time.mktime(t) : 将一个struct_time转化为时间戳。
time.mktime(time.localtime())    #1473525749.0

结构化时间 转为 格式化时间

  • time.strftime()
  • time.asctime()
# time.strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
# time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
time.strftime("%Y-%m-%d %X", time.localtime())    #2016-09-11 00:49:56


# time.asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
# 如果没有参数,将会将time.localtime()作为参数传入。
time.asctime()    #Sun Sep 11 00:43:43 2016

格式化时间 转为 结构化时间

  • time.strptime
# time.strptime(string[, format])
# 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')        #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,tm_wday=3, tm_yday=125, tm_isdst=-1)
# 在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。

1.4 其他操作

# 线程推迟指定的时间运行,单位为秒。
time. sleep(100)

# 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
time.clock( )

# 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
time.altzone  属性

2 datetime 模块

2.1 关于datetime 模块

# 导入模块
import datetime
# 使用
datetime.datetime.now()  #获取当前的时间
# 注意:  datetime是模块,但是该模块下还有一个类也也叫datetime,所以相关操作 我们必须 datetime.datetime


# 更好的导入模块的方式
from datetime import datetime
# 我们直接使用datetime
datetime.now()   # 获取当前时间

2.2 获取当前的日期时间

from datetime import datetime
now = datetime.now() # 获取当前datetime
print(now)            # 2015-05-18 16:28:07.198690
print(type(now))    # <class 'datetime.datetime'>

datetime.utcnow()   # 获取标准时区的时间

我们注意到,datetime.now() 返回的是一个datetime对象,并不是字符串或者时间元祖,有别于 time模块

2.3 获取指定的日期时间

from datetime import datetime

dt = datetime(2019, 12, 1)
print(dt)    # 2019-12-01 00:00:00

dt = datetime(2019, 12, 7, 10)
print(dt)    # 2019-12-07 10:00:00

dt = datetime(2019, 12, 7, 10, 3)
print(dt)    # 2019-12-07 10:03:00

dt = datetime(2019, 12, 7, 10, 3, 56)
print(dt)    # 2019-12-07 10:03:56

dt = datetime(2019, 12, 7, 10, 3, 56, 10000)
print(dt)    # 2019-12-07 10:03:56.010000
最少指定三个参数, year、month、day
最多指定七个参数   year、month、day、hour、minute、second、microsecond
最后一个可指定的单位是微秒  1秒 = 1000000微秒

2.4 datetime 类型的时间用于其他 形式的时间 转换

datetime类型 转 时间戳

使用.timstamp() 即可返回 时间戳形式

from datetime import datetime

dt = datetime(2000, 12, 1, 12, 23, 45)
print(dt.timestamp())

now = datetime.now()
print(now.timestamp())

时间戳 转 datetime类型

datetime.fromtimestamp(时间戳)返回datetime对象,通过时间戳指定时间

from datetime import datetime
t = 1429417200.0
print(datetime.fromtimestamp(t))  # 本地时间 2015-04-19 12:20:00
print(datetime.utcfromtimestamp(t)) # UTC时间    2015-04-19 04:20:00

datetime类型 转 格式化字符串

使用datetime对象的 .strftime()即可

from datetime import datetime
now = datetime.now()
print(now.strftime('%Y-%m-%d %X'))  # 2017-09-28 17:18:33

格式化字符串 转 datetime 类型

通过datetime.strptime()实现,需要一个日期和时间的格式化字符串

from datetime import datetime
cday = datetime.strptime('2018-08-01 18:19:59', '%Y-%m-%d %H:%M:%S')
print(cday)    # 2015-08-01 18:19:59

2.5 datetime 时间 加减

from datetime import datetime, timedelta
now = datetime.now()
now + timedelta(hours=10)        # 当前时间+10小时
now - timedelta(days=1)            # 当前时间-1天
now + timedelta(days=2, hours=12)  # 当前时间+2天12个小时

# 替换时间
now.replace(year=1127, day=1, hour=1, minute=0, second=0, microsecond=0)

3 calendar 模块 (了解)

该模块用来生成日历形式的字符串

import calendar

# 设置每月从星期几开始  0表示星期一,1表示星期二,6表示星期天 默认0
calendar.setfirstweekday(0)

# 显示某一年的日历
print(calendar.calendar(2015))
print(calendar.calendar(2008, w=2, l=1, c=6))  # w是日期行间距,l是垂直间距,c是月间距

# 显示某月日历
print(calendar.month(2019, 10))
print(calendar.month(2018, 9, w=2, l=1))

# 显示 每月从星期几开始 默认0
print(calendar.firstweekday())

# 返回 指定日期 是星期几 0是星期一,1是星期二, 一直到 6表示星期天
print(calendar.weekday(2018, 9, 2))
                                   2015

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

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

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

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

results matching ""

    No results matching ""