day5-time&datetime模块

概述

      我们的程序在运行中时,通常会进行日志的记录,而日志记录的同时会有具体的时间,方便我们对程序的运行状况进行监控,那么,今天我们来说说time&datetime模块

time模块

>>> help(time)    #获取时间帮助
   The tuple items are:
      year (including century, e.g. 1998)
      month (1-12)
      day (1-31)
      hours (0-23)
      minutes (0-59)
      seconds (0-59)
      weekday (0-6, Monday is 0)
      Julian day (day in the year, 1-366)
      DST (Daylight Savings Time) flag (-1, 0 or 1)

1.time.time()

用法:返回当前时间的时间戳

>>> import time
>>> time.time()
1499532751.878138

>>> import time
>>> time.timezone   #UTC和本地标准时间的差多少秒
-28800   

>>> 28800/3600  #秒转换成小时
8.0        #中国在东8区,中国比世界时间早8小时

>>> time.daylight   #有无使用夏令时
0

>> time.sleep(3)  #睡几秒

2.time.gmtime()

用法:

1.返回当前UTC时间(伦敦时间)

2.时间戳转换到到结构化时间(元组)UTC时区,默认将本地时间秒数传进去

>>> time.gmtime()  #时间戳转换到到结构化时间(元组)UTC时区,默认将本地时间秒数传进去
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=12, tm_hour=12,tm_min=5, tm_sec=11, tm_wday=2, tm_yday=193, tm_isdst=0)

3.time.localtime()

用法:

1.返回本地时间的struct_time的格式对象

2.时间戳转换到到结构化时间(元组)本地时区,默认将本地时间秒数传进去

localtime: # 语法格式
>>> localtime([seconds]) ->(tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst)

>>> time.localtime() 
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=9, tm_hour=0,tm_min=53, tm_sec=46, tm_wday=6, tm_yday=190, tm_isdst=0)   #dst时区(是否是夏令时,0-非夏令时)

>>> time.localtime(1111111111)    #1111111111/3600/24/365 =35.233102200659566  ,1970+35= 2005
time.struct_time(tm_year=2005, tm_mon=3, tm_mday=18, tm_hour=9, tm_min=58, tm_sec=31, tm_wday=4, tm_yday=77, tm_isdst=0)

# 那么我们如何将元组中的数据取出来:
import time

time.time()
x=time.localtime()
print("this is year:",x.tm_year)
#输出
this is year:2017

4.time.mktime

用法:将本地时间本地时区(元组)转换为时间戳

>>>import time
>>> x = time.localtime()
>>>mktime(x)
1499862652.0

5.time.strftime()

用法:将struct_time元组格式转换成字符串格式

>>> strftime(format[, tuple]) -> string  #语法格式
    %Y    完整年份.
    %m  月份 [01,12].
    %d  一个月中的第几天 [01,31].
    %H  一天中的第几个小时 [00,23].
    %M  分钟 [00,59].
    %S   秒 [00,61].
    %z   UTC的偏移时区.
    %a  本地简化的星期名称.
    %A  本地完整的星期名称.
    %b  本地简化月份名称.
    %B  本地完整月份名称.
    %c  本地相应的日期和时间表示.
    %I   第几个小时 [01,12].
    %p  本地am或者pm.


>>> time.strftime("%Y-%m-%d %H:%M:%S") #组合参数
'2017-07-12 20:36:10'

import time

x=time.localtime(1111111111)  #x为元组格式
print(time.strftime("%Y-%m-%d%H:%M:%S",x))  #x为元组格式
#输出
2005-03-18 09:58:31

6.time.strptime()

用法:将时间格式字符串转换成struct_time元组格式

>>> strptime(string, format) -> struct_time  #语法格式
    %Y    完整年份.
    %m  月份 [01,12].
    %d  一个月中的第几天 [01,31].
    %H  一天中的第几个小时 [00,23].
    %M  分钟 [00,59].
    %S   秒 [00,61].
    %z   UTC的偏移时区.
    %a  本地简化的星期名称.
    %A  本地完整的星期名称.
    %b  本地简化月份名称.
    %B  本地完整月份名称.
    %c  本地相应的日期和时间表示.
    %I   第几个小时 [01,12].
    %p  本地am或者pm.

>>> import time
>>> time.strptime("2017-03-30 17:30","%Y-%m-%d %H:%M")
#转换为struct_time格式的时间对象
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=30, tm_hour=17, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=89, tm_isdst=-1)

7.time.asctime()

用法:从struct_time元组格式转换成字符串格式

>>> help(time.asctime) #语法格式
asctime(...)
    asctime([tuple]) -> string

import time x=time.localtime(1111111111)
print(time.asctime(x)) 
#输出
Fri Mar 18 09:58:31 2005  #返回(星期 月 日 时 分 秒 年)

8.time.ctime

用法:将时间戳格式转换成字符串格式

>> help(time.ctime) #语法格式
ctime(...) 
    ctime(seconds) -> string

>>> time.ctime()
'Wed Jul 12 21:22:42 2017'

时间格式的转换

1.转换参数

2.时间格式转换关系图

datetime模块

1.datatime.datatime.now()

用法:返回当前时间

>>> import datetime
>>> print(datetime.datetime.now()) #获取当前时间
2017-07-12 21:33:43.381365

2.datatime.datatime.timedelta()

用法:对某个时间的加减

>>> print(datetime.datetime.now()+datetime.timedelta(3))   #获取当前时间+3天
2017-07-15 21:36:17.006365

>>> print(datetime.datetime.now()+datetime.timedelta(-3))  #获取当前时间-3天
2017-07-09 21:37:21.492446

>>> print(datetime.datetime.now()+datetime.timedelta(hours=3))  #获取当前时间+3小时
2017-07-13 00:38:55.836818

>>> print(datetime.datetime.now()+datetime.timedelta(hours=-3))  #获取当前时间-3小时
2017-07-12 18:39:19.115146

>>> print(datetime.datetime.now()+datetime.timedelta(minutes=30))  #获取当前时间+30分钟
2017-07-12 22:09:55.359911

时间替换(修改时间)

>>> import datetime
>>> c_time = datetime.datetime.now()
>>> print(c_time)  #当前时间输出
2017-07-22 10:47:22.682289

>>> update_c_time = c_time.replace(minute=3,hour=2)  #时间替换
>>> print(update_c_time)   #替换后的时间输出
2017-07-22 02:03:22.682289 
posted @ 2017-07-26 15:17  Mr.hu  阅读(153)  评论(0编辑  收藏  举报