Python时间处理之time模块

时间:2023-09-01 18:14:20

1、time模块简介

time模块提供各种操作时间的函数
  说明:一般有两种表示时间的方式:
       第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
       第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的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是决定是否为夏令时的旗帜

实例:time.time()获取当前系统时间戳

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # time.time()获取当前时间戳
 print(time.time())

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
1471504540.8173106

实例:time.ctime()获取当前系统时间

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # 返回当前系统时间
 print(time.ctime())

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
Thu Aug 18 15:20:26 2016

实例:time.gmtime()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # time.gmtime()将一个时间戳转换成一个UTC时区(0时区)的struct_time,如果seconds参数未输入,则以当前时间为转换标准
 print(time.gmtime())
 time_obj = time.gmtime()
 # 利用format进行时间拼接
 print("{year}-{month}-{day}".format(year=time_obj.tm_year,month=time_obj.tm_mon,day=time_obj.tm_mday))

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=18, tm_hour=7, tm_min=22, tm_sec=34, tm_wday=3, tm_yday=231, tm_isdst=0)
2016-8-18

实例:time.localtime()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # time.localtime()将一个时间戳转换成一个当前时区的struct_time,如果seconds参数未输入,则以当前时间为转换标准
 print(time.localtime())

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=18, tm_hour=15, tm_min=29, tm_sec=15, tm_wday=3, tm_yday=231, tm_isdst=0)

实例:time.mktime()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # Python time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。
 print(time.mktime(time.localtime()))

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
1471505474.0

实例:time.sleep()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 #time.sleep() 睡眠几秒然后在继续运行
 print("----start---->")
 time.sleep(3)
 print("----end---->")

实例:time.strftime()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # time.strftime(),将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
 current_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
 print(current_time)

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
2016-08-18 15:33:29

实例:time.strptime()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import time

 # time.strptime(),将时间字符串根据指定的格式化符转换成数组形式的时间
 current_time = time.strptime("2016-08-18 13:34","%Y-%m-%d %H:%M")
 print(current_time)

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/timemod.py
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=18, tm_hour=13, tm_min=34, tm_sec=0, tm_wday=3, tm_yday=231, tm_isdst=-1)

2、datetime模块

datetime模块定义了下面这几个类:

  • datetime.date:表示日期的类。常用的属性有year, month, day;
  • datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期时间。
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
  • datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)

实例:dastetime.date.today()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import datetime

 # datetime.date.today(),返回一个表示当前本地日期的date对象
 print(datetime.date.today())

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/datetime_mod.py
2016-08-18

实例:datetime.datetime.now()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import datetime

 # datetime.datetime.now()返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
 print(datetime.datetime.now())

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/datetime_mod.py
2016-08-18 15:51:27.757108

实例:datetime.timedelta()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import datetime

 # datetime.timedelta:表示时间间隔,即两个时间点之间的长度
 today = datetime.date.today()
 oneday = datetime.timedelta(days=1)
 # 获取昨天的时间就用当前的日期减去间隔的天数,获取明天的日期就是+
 res = today - oneday
 print(res)

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/datetime_mod.py
2016-08-17

实例:datetime.replace()

 #!/usr/bin/env python
 # _*_ coding:utf-8 _*_
 # Author: enzhi.wang
 import datetime

 # time.replace 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变)
 today = datetime.date.today()
 print("当前的日期:",today)
 res = today.replace(2016,8,20)
 print("替换后的日期:",res)
 # 也可以对日期进行判断
 if res > today:
     print(True)
 else:
     print(False)

以上代码结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/timemodule/datetime_mod.py
当前的日期: 2016-08-18
替换后的日期: 2016-08-20
True