Python基础014--日期格式化、时间戳和时间的转换

日期格式化、时间戳和时间的转换

  • 日期格式化
    • python中日期格式化符号
表达式 意义
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(0-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),星期天为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %本身
  • 常用的time模块中的内置函数
函数表达式 含义
time.asctime([tupletime]) 接受时间元组并返回一个可读的形式"Tue Dec 11 18:07:14 2008" (2008年12年12月12日周二18时07分14秒)的24个字符的字符串
time.clock() 用以浮点数计算的秒数返回当前的CPU时间;用来衡量不同程序的耗时,比time.time()更有用
time.localtime([secs]) 接收时间戳并返回当地时间下的时间元组t
time.mktime(tupletime) 接收时间元组并返回时间戳
time.sleep(secs) 推迟调用线程的运行,secs指秒数
time.strftime(fmt[.tupletime]) 接收一个时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定
time.strptime(str.fmt='%a %b %d %H:%M:%S %Y') 根据fmt的格式把一个时间字符串解析为时间元组
time.time() 返回当前时间的时间戳
time.ctime() 将一个时间戳转换为一个时间的字符串
# time.time()                       # 返回当前时间的时间戳
In [217]: import time
In [218]: time.time()
Out[218]: 1518166671.059755

# time.asctime([tupletime])         # 接收一个时间元组,返回一个可读形式的24个字符的字符串
In [221]: time.asctime(time.localtime(time.time()))     # 获取本地时间
Out[221]: 'Fri Feb  9 17:02:45 2018'

In [225]: time.localtime(time.time())
Out[225]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=9, tm_hour=17, tm_min=17, tm_sec=58, tm_wday=4, tm_yday=40, tm_isdst=0)
In [226]: t = time.localtime(time.time())
In [227]: time.asctime(t)
Out[227]: 'Fri Feb  9 17:19:06 2018'

# time.localtime([secs])            # 接收时间戳返回本地时间元组,然后用asctime函数做时间格式转换
In [229]: t = time.time()
In [230]: print t
1518168389.46
In [231]: m = time.localtime(t)
In [232]: print m
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=9, tm_hour=17, tm_min=26, tm_sec=29, tm_wday=4, tm_yday=40, tm_isdst=0)
In [233]: lt = time.asctime(m)
In [234]: print lt
Fri Feb  9 17:26:29 2018

# time.mktime(tupletime)            # 接收时间元组并返回时间戳
In [235]: m
Out[235]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=9, tm_hour=17, tm_min=26, tm_sec=29, tm_wday=4, tm_yday=40, tm_isdst=0)
In [236]: time.mktime(m)
Out[236]: 1518168389.

# time.strftime(fmt[.tupletime])    # 接收一个时间组,返回指定的本地时间
In [8]: t
Out[8]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=10, tm_hour=8, tm_min=29, tm_sec=32, tm_wday=5, tm_yday=41, tm_isdst=0)
In [10]: time.strftime("%Y-%m-%d %H:%M:%S",t)
Out[10]: '2018-02-10 08:29:32'
In [11]: time.strftime("%Y-%m-%d %H:%M:%S %j",t)
Out[11]: '2018-02-10 08:29:32 041'
In [12]: time.strftime("%Y-%m-%d %H:%M:%S %p",t)
Out[12]: '2018-02-10 08:29:32 AM'
In [13]: time.strftime("%Y-%m-%d %H:%M:%S %p %w",t)
Out[13]: '2018-02-10 08:29:32 AM 6'
In [14]: time.strftime("%Y-%m-%d %H:%M:%S %p %w %b",t)
Out[14]: '2018-02-10 08:29:32 AM 6 Feb'
In [15]: time.strftime("%Y-%m-%d %H:%M:%S %p %w %B",t)
Out[15]: '2018-02-10 08:29:32 AM 6 February'
In [16]: time.strftime("%X",t)
Out[16]: '08:29:32'
In [17]: time.strftime("%x %X",t)
Out[17]: '02/10/18 08:29:32'
In [18]: time.strftime("%x %X %z",t)
Out[18]: '02/10/18 08:29:32 +0000'

# time.ctime([secs])                # 接收一个时间戳返回一个指定格式的字符串
In [19]: mm = time.time()
In [20]: time.ctime(mm)
Out[20]: 'Sat Feb 10 08:44:37 2018'
In [21]: print mm
1518223477.63

# time.strptime(fmt)                # 根据fmt格式把时间字符串转换为时间元组
In [24]: time.strptime("10 2 2018", "%d %m %Y")
Out[24]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=41, tm_isdst=-1)

In [34]: time.strptime("10 2 2018 8 58 30", "%d %m %Y %H %M %S")
Out[34]: time.struct_time(tm_year=2018, tm_mon=2, tm_mday=10, tm_hour=8, tm_min=58, tm_sec=30, tm_wday=5, tm_yday=41, tm_isdst=-1)

推荐阅读更多精彩内容