• 20190313-时间和日期-Time


    概述

    在Python中,与时间处理相关的模块有:time、datetime以及calendar,Python中通常有这几种方式表示时间:时间戳、格式化的时间字符串、时间元组(struct_time 共九种元素)本篇主要讲time模块。

    • 时间戳:时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。Tick单位(时间间隔以秒为单位的浮点小数)最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年某日。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()等。
    • 格式化时间字符串:通常可以通过换返回特定的时间字符串
    • 时间元组:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()等。

    时间戳

    时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。Tick单位(时间间隔以秒为单位的浮点小数)最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年某日。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()、mktime()等

    time.time( ):返回当前时间的时间戳(1970纪元后经过的浮点秒数)

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

    time.mktime(tupletime):接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)

    实例:

    >>> time.time()
    1552465936.2394762#time.time()是统计的wall time(即墙上时钟),也就是系统时钟的时间戳(1970纪元后经过的浮点秒数)。所以两次调用的时间差即为系统经过的总时间。
    >>> time.clock()
    761.021460792#记录进程在内存中耗时切片的综合。因为内存是轮询机制,因此time.clock()函数是记录当前python进程所占用cpu的总时间
    >>> a = time.strptime('2019-01-01','%Y-%m-%d')
    >>> time.mktime(a) #将一个struct_time转化为时间戳
    1546272000.0

    时间元组

    struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。

    索引(Index)

    属性(Attribute)

    值(Values)

    0

    tm_year(年)

    比如2011

    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

    6

    tm_wday(一周的第几日)

    0 - 6(0表示周日)

    7

    tm_yday(一年中的第几天)

    1 - 366

    8

    tm_isdst(是否是夏令时)

    默认为-1

    time.gmtime([secs]):secs参数未提供,则以当前时间为准

    time.localtime([secs]):secs参数未提供,则以当前时间为准

    strptime(string,format):将一个指定格式的时间字符串转化成元组时,参数format的格式必须和string的格式保持一致,如果string中日期间使用“-”分隔,format中也必须使用“-”分隔,时间中使用冒号“:”分隔,后面也必须使用冒号分隔,否则会报格式不匹配的错误,format格式参考官方手册

        %Y  Year with century as a decimal number.
        %m  Month as a decimal number [01,12].
        %d  Day of the month as a decimal number [01,31].
        %H  Hour (24-hour clock) as a decimal number [00,23].
        %M  Minute as a decimal number [00,59].
        %S  Second as a decimal number [00,61].
        %z  Time zone offset from UTC.
        %a  Locale's abbreviated weekday name.
        %A  Locale's full weekday name.
        %b  Locale's abbreviated month name.
        %B  Locale's full month name.
        %c  Locale's appropriate date and time representation.
        %I  Hour (12-hour clock) as a decimal number [01,12].
        %p  Locale's equivalent of either AM or PM.

    中文版

    时间字符串支持的格式符号:(区分大小写)
    %a 本地星期名称的简写(如星期四为Thu)
    %A 本地星期名称的全称(如星期四为Thursday)
    %b 本地月份名称的简写(如八月份为agu)
    %B 本地月份名称的全称(如八月份为august)
    %c 本地相应的日期和时间的字符串表示(如:
    15/08/27 10:20:06%d 一个月中的第几天(01 - 31%H 一天中的第几个小时(24小时制,00 - 23%I 第几个小时(12小时制,0 - 11%j 一年中的第几天(001 - 366%m 月份(01 - 12%M 分钟数(00 - 59%p 本地am或者pm的相应符
    %S 秒(00 - 61%U 一年中的星期数。(00 - 53星期天是一个
    星期的开始。)第一个星期天之前的所有天数都
    放在第0周。
    %w 一个星期中的第几天(0 - 6,0是星期天)
    %W 和%U基本相同,不同的是%W以星期一为
    一个星期的开始。
    %x 本地相应日期字符串(如15/08/01%X 本地相应时间字符串(如08:08:10%y 去掉世纪的年份(00 - 99)两个数字表示
    的年份
    %Y 完整的年份(4个数字表示年份)
    %z 与UTC时间的间隔(如果是本地时间,返回
    空字符串)
    %Z 时区的名字(如果是本地时间,返回空字符
    串)
    %% ‘%’字符

     实例:

    >>> time.gmtime()#函数将一个时间戳转换为UTC时区(0时区)的struct_time,
    time.struct_time(tm_year=2019, tm_mon=3, tm_mday=13, tm_hour=8, tm_min=50, tm_sec=46, tm_wday=2, tm_yday=72, tm_isdst=0)
    >>> time.localtime()#函数将一个时间戳转换为当前时区的struct_time
    time.struct_time(tm_year=2019, tm_mon=3, tm_mday=13, tm_hour=16, tm_min=50, tm_sec=52, tm_wday=2, tm_yday=72, tm_isdst=0)
    >>> time.localtime(1552066987)#函数将一个时间戳转换为当前时区的struct_time
    time.struct_time(tm_year=2019, tm_mon=3, tm_mday=9, tm_hour=1, tm_min=43, tm_sec=7, tm_wday=5, tm_yday=68, tm_isdst=0)
    >>> time.strptime('2019-01-01','%Y-%m-%d')#将对应格式的时间字符串换为当前时区的struct_time
    time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)

    格式化时间字符串

    Python格式化时间字符串是基于时间元组的基础上进行格式化的。常见的格式化时间元组的函数为time.asctime(time.local(time.time())),time.strftime(format[,t])等

    time.asctime(time.local(time.time())):接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串 

    time.strftime(format[,t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化 为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()

    实例:

    >>> a
    time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)
    >>> time.asctime(a)#接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串
    'Tue Jan  1 00:00:00 2019'
    >>> time.strftime('%Y-%m-%d %H:%M:%S',a)#接收以时间元组,并返回以可读字符串表示的当地时间,格式由format决定。
    '2019-01-01 00:00:00'

     其他时间函数

    time.ctime([secs]):作用相当于asctime(localtime(secs)),未给参数相当于asctime()

    time.sleep(secs):推迟调用线程的运行,secs指秒数。

    time.perf_counter():返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的

    time.process_time() 返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的

    实例:

    >>> time.ctime(time.time())#作用相当于asctime(localtime(secs)),未给参数相当于asctime()
    'Wed Mar 13 17:32:47 2019'
    >>> time.asctime(time.localtime())#接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串 
    'Wed Mar 13 17:33:01 2019'
    >>> time.sleep(3)
  • 相关阅读:
    自我学习笔记08
    自我学习笔记07
    自我学习笔记06
    自我学习笔记05
    自我学习笔记04
    自我学习笔记03
    自我学习笔记02
    WebApi HttpUtils
    Android 正则表达式,Pattern,Matcher基本使用
    Andriod项目结构
  • 原文地址:https://www.cnblogs.com/hyj691001/p/10524664.html
Copyright © 2020-2023  润新知