time 模块

一 time模块的时间表现格式

  a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量


  b、struct_time时间元组,共有九个元素组。


  c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。


 时间格式转换导图

二 互相转换实例

import
 time
# 1.时间戳 t = time.time()        # 获取当前时间戳 ---> 1553049266.159761 st = int(t)              # 秒级时间戳    ---> 1553049298 mst = int(round(t * 1000))      # 毫秒级时间戳 ---> 1553049298371 nowTime = lambda:int(round(t * 1000)) print(nowTime()) # 毫秒级时间戳,基于lambda  ---> 1553049298371

# 2.时间元组
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=10, tm_min=54, tm_sec=58, tm_wday=2, tm_yday=79, tm_isdst=0)
time.localtime()     # 时间元组,默认为当前时间
time.localtime(1553050658.185377)  # 将时间戳转换为时间元组

# 3.可视化时间 Wed Mar 20 11:00:12 2019
time.ctime()       # 可视化的时间,默认为当前时间
time.ctime(
1553050658.185377)    # 将时间戳转换为可视化的时间格式

# 4.时间元组 ---> 时间戳
time.mktime((2019,3,20,11,5,57,2,79,0)) # 1553051157.0
# 5.时间元组 ---> 可视化时间  'Wed Mar 20 11:11:03 2019'
time.asctime()      # 可视化的时间,默认为当前时间
time.asctime((2019,3,20,11,5,57,2,79,0))  # 将时间元组转换为可视化的时间格式
time.asctime(time.localtime(1553051598.7391522))  # 将时间戳转换为时间元组后,再转化为可视化时间
# 6.时间元组 ---> 知道格式的可视化时间 : time.strftime(要转换成的格式, 时间元组)
time.strftime("%Y-%m-%d %X")
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) # 2019-03-20 11:17:43
# 7.指定格式的可视化时间 ---> 时间元组 : time.strptime(时间字符串, 时间字符串的格式)
print(time.strptime('2019-03-20 11:17:43', '%Y-%m-%d %H:%M:%S'))
# 8.浮点数秒数,用于衡量不同程序的耗时,前后两次调用的时间差
time.clock()

# 9.格林威治时间
time.gmtime()
time.gmtime(time.time())

# 10.时间元组的属性-值

属性 值 tm_year(年) 比如1999 tm_mon(月) 1 - 12 tm_mday(日) 1 - 31 tm_hour(时) 0 - 23 tm_min(分) 0 - 59 tm_sec(秒) 0 - 61 tm_wday(weekday) 0 - 6(0表示周日) tm_yday(一年中的第几天) 1 - 366 tm_isdst(是否是夏令时) 默认为-1


strftime : 时间对象 ---> 字符串对象 ; strptime : 字符串对象 ---> 时间对象 
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))  # 将日期格式化输出 ---> 2019-03-20 10:55:42

datetime 模块

datatime模块重新封装了time模块,提供的类有:date,time,datetime,timedelta,tzinfo。

一. date类

# 1.静态方法和字段
date.max :date对象所能表示的最大日期。datetime.date(9999, 12, 31)
date.min : date对象所能表示的最小日期。datetime.date(1, 1, 1)
date.resolution :date对象表示日期的最小单位,这里是天

date.today() :返回一个'表示当前本地日期'的date对象

date.fromtimestamp(timestamp) :根据给定的时间戮,返回一个date对象


# 2.方法和属性
d1 = date(2011,6,3)           # 创建date对象
d1.year、date.month、date.day      # date对象的年、月、日属性
d2 = d1.replace(year, month, day)  # 生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
d1.timetuple()              # 返回日期对应的时间元组(time.struct_time)对象;
d1.weekday()               # 返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
d1.isoweekday()             # 返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
d1.isocalendar()            # 返回格式:(year,month,day)的元组,eg : (2019,3,20)
d1.isoformat()             # 返回格式如'YYYY-MM-DD’的字符串;'2019-03-03'
d1.strftime("%Y-%m-%d %X")      # 和time模块format相同。

二. time类

# 1.静态方法和字段
time.min :time类所能表示的最小时间。datetime.time(0, 0)
time.max : time类所能表示的最大时间。datetime.time(23, 59, 59, 999999)
time.resolution :time对象表示时间的最小单位,这里是1微秒
 
# 2.方法和属性
t1 = datetime.time(10,23,15)                # 创建time对象
t1.hour、t1.minute、t1.second、t1.microsecond       # time对象的时、分、秒、微秒属性 t1.tzinfo                            # 时区信息         t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ) # 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变); t1.isoformat()                         # 返回型如"HH:MM:SS"格式的字符串表示; t1.strftime(fmt)                        # 同time模块中的format;


三. datetime类 : 相当于date&time的结合体

# 1.静态方法和字段

注: from datetime import datetime
datetime.today()                        # 返回一个表示当前本地时间的datetime对象;
datetime.now([tz])                       # 返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow()                       # 返回一个当前utc时间的datetime对象;格林威治时间 
datetime.fromtimestamp(timestamp[, tz])          # 根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp)           # 根据时间戮创建一个datetime对象;
datetime.combine(date, time)                # 根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format)          # 将格式字符串转换为datetime对象;

# 2.方法和属性
dt = datetime.now()                              # datetime对象
dt.year、month、day、hour、minute、second、microsecond、tzinfo    # datetime对象的年,月,日,时、分、秒、微秒属性
dt.date()        # 获取date对象
dt.time()        # 获取time对象
dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ])  # 创建新的date对象
dt. timetuple () dt. utctimetuple () dt. toordinal () dt. weekday () dt. isocalendar () dt. isoformat ([ sep] ) dt. ctime () # 返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple())); dt. strftime (format)

 

四. timedelta类 : 时间加减

from  datetime import *

dt = datetime.now()          # 日期减一天
dt1 = dt + timedelta(days=-1)    # 昨天
dt2 = dt - timedelta(days=1)     # 昨天
dt3 = dt + timedelta(days=1)     # 明天
delta_obj = dt3-dt           # datetime.timedelta(0, 86284, 691779)
print(type(delta_obj))        # <type 'datetime.timedelta'> 1 day, 0:00:00
print(delta_obj.days ,delta_obj.total_seconds())  # 0, 86284.691779

五. tzinfo时区类

from datetime import datetime, tzinfo,timedelta

"""
tzinfo是关于时区信息的类
tzinfo是一个抽象类,所以不能直接被实例化
"""
class UTC(tzinfo):
    """UTC"""
    def __init__(self,offset = 0):
        self._offset = offset

    def utcoffset(self, dt):
        return timedelta(hours=self._offset)

    def tzname(self, dt):
        return "UTC +%s" % self._offset

    def dst(self, dt):
        return timedelta(hours=self._offset)

#北京时间
beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))
print("beijing time:",beijing)
#曼谷时间
bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
print("bangkok time",bangkok)
#北京时间转成曼谷时间
print("beijing-time to bangkok-time:",beijing.astimezone(UTC(7)))

#计算时间差时也会考虑时区的问题
timespan = beijing - bangkok
print("时差:",timespan)

#Output==================
# beijing time: 2011-11-11 00:00:00+08:00
# bangkok time 2011-11-11 00:00:00+07:00
# beijing-time to bangkok-time: 2011-11-10 23:00:00+07:00
# 时差: -1 day, 23:00:00

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

 

转载: https://blog.csdn.net/ni357103403/article/details/51579027

符号       说明                                     例子   
%a        英文星期的简写                          Mon
 %A         英文星期的完整编写                        Monday
 %b         英文月份的简写                          Jun
 %B        英文月份的完整编写                      June
 %c        显示本地的日期和时间                        06/30/14 01:03:17
 %I        小时数,取值在01~12之间                     01
 %j      显示从本年第一天开始到当天的天数                     181
 %w     (week)  显示今天是星期几,0表示星期天                1
 %W        显示当天属于本年的第几周,星期一作为一周的第一天进行计算     26  ==> 26*7 = 182天
 %x       本地的当天日期                         06/30/14
 %X       本地的当天时间                        01:09:54
 %y       年份,取值在00~99之间                     14
%Y      年份完整的拼写                          2014
%m      (month) 月份,取值在01~12之间                 06
%d         (day) 日期数,取值在1~31之间                  30
%H       (Hour)  小时数,取值在00~23之间                 01
%M     (Minute) 分钟数,取值在01~59之间                04
%S       秒                               58

 posted on 2019-03-20 13:29  lin-gooo  阅读(191)  评论(0编辑  收藏  举报