美文网首页
python time & datetime 模块的基本用法

python time & datetime 模块的基本用法

作者: _AlphaBaby_ | 来源:发表于2018-10-04 13:29 被阅读0次

    我们在编程中常常都会涉及到获取时间,时间的计算等相关的问题 !

    在python中呢!关于时间的操作都会用到timedatetime这两个模块,所以我们应该熟练掌握这两个模块的操作!

    time模块


    time()方法

    获取当前时间戳
    时间戳是什么呢?给在百度找了一个讲的很好的,可以参考,「什么是时间戳

    >>> import time
    >>> time.time()
    1538487182.2460868
    

    时间戳可用于 time() 模块的其他内置函数,比如 localtime,ctime,gmtime


    localtime([secs]) & gmtime([secs])

    接收时间戳,返回指定时间戳的时间元组,localtime返回的是当地时间的时间元组,gmtime返回的是格林威治时间的时间元组(零时区)。
    如果你是在中国当然获取的是北京,也就是东八区的时间,每个国家都是用自己国家首都所在区的区时。

    >>> import time
    >>> time.localtime()
    time.struct_time(tm_year=2018, tm_mon=10, tm_mday=2, tm_hour=22, tm_min=0, tm_sec=30, tm_wday=1, tm_yday=275, tm_isdst=0)
    >>> time_obj = time.localtime()
    >>> time_obj.tm_year   #获取其中的tm_year
    2018
    >>> time_obj[0]            #获取其中的tm_year
    2018
    >>> time.gmtime()
    time.struct_time(tm_year=2018, tm_mon=10, tm_mday=2, tm_hour=14, tm_min=0, tm_sec=45, tm_wday=1, tm_yday=275, tm_isdst=0)
    

    localtime()gmtime都是返回的是个struct_time类型的数据,里面分别有:

    类型 类型
    tm_year
    tm_mon
    tm_mday 一个月中的第几天
    tm_hour 小时
    tm_min 分钟
    tm_sec
    tm_wday 星期几
    tm_yday 一年中的第几天
    tm_isdst 是否是周末

    附加拓展
    如果我们想要得到一个类似年-月-日这种类型的字符串,那怎么弄呢?我们可以使用python的字符串格式化。

    import time
    time_obj = time.localtime()
    print('{year}-{month}-{day}'.format(year=time_obj.tm_year,
                                        month=time_obj.tm_mon,
                                        day=time_obj.tm_mday))
    

    asctime() & ctime()

    asctime([tuple]) -> string
    ctime(seconds) -> string
    

    asctime()是把localtimegmtime生成的time.struct_time类型的转化为字符串类型,ctime是把时间戳转化为字符串类型。
    例子:

    >>> time.asctime(time.localtime())
    'Wed Oct  3 14:04:40 2018'
    >>> time.ctime(time.time())
    'Wed Oct  3 14:04:53 2018'
    >>> time.asctime()
    'Wed Oct  3 14:05:04 2018'
    >>> time.ctime()
    'Wed Oct  3 14:05:09 2018'
    

    如果没有传递参数默认是当前时间


    mktime()

    time.struct_time类型转化为时间戳格式
    例子

    >>> time.mktime(time.localtime())
    1538548189.0
    

    sleep(sec) (常用)

    让程序延时,参数是秒数
    例子

    import time
    print('hello')
    time.sleep(3)
    print('world!')
    

    strftime() & strptime (常用)

    strftimetime.struct_time类型转成你想指定的格式的字符串类型,strptime是把一个字符串格式的时间转化为time.struct_time类型。
    例子

    >>> time.strftime("%Y-%m-%d %w %H:%M:%S",time.localtime())
    '2018-10-03 3 14:41:15'
    >>> time.strptime('2018-10-03 3 14:41:15', "%Y-%m-%d %w %H:%M:%S")
    time.struct_time(tm_year=2018, tm_mon=10, tm_mday=3, tm_hour=14, tm_min=41, tm_sec=15, tm_wday=2, tm_yday=276, tm_isdst=-1)
    

    大部分人应该都不知道"%Y-%m-%d %w %H:%M:%S"是什么东西,我在网上给大家找了一个参考:

    格式符 说明
    %a 星期的英文单词的缩写:如星期一, 则返回 Mon
    %A 星期的英文单词的全拼:如星期一,返回 Monday
    %b 月份的英文单词的缩写:如一月, 则返回 Jan
    %B 月份的引文单词的缩写:如一月, 则返回 January
    %c 返回datetime的字符串表示,如03/08/15 23:01:26
    %d 返回的是当前时间是当前月的第几天
    %f 微秒的表示: 范围: [0,999999]
    %H 以24小时制表示当前小时
    %I 以12小时制表示当前小时
    %j 返回当天是当年的第几天 范围[001,366]
    %m 返回月份 范围[0,12]
    %M 返回分钟数 范围 [0,59]
    %P 返回是上午还是下午–AM or PM
    %S 返回十进制的秒数 范围 [0,61]
    %U 返回当周是当年的第几周 以周日为第一天
    %W 返回当周是当年的第几周 以周一为第一天
    %w 当天在当周的天数,范围为[0, 6],6表示星期天
    %x 日期的字符串表示 :03/08/15
    %X 时间的字符串表示 :23:22:08
    %y 两个数字表示的年份 15
    %Y 四个数字表示的年份 2015
    %z 与utc时间的间隔 (如果是本地时间,返回空字符串)
    %Z 时区名称(如果是本地时间,返回空字符串)

    这个表格是不需要记忆的,能记住常用的就行了,到时候用到了再来查表举行了


    datetime 模块

    date.today()

    输出当前日期

    import datetime
    a = datetime.date.today()
    print(a)
    print(type(a))    #这里的a其实是一个对象
    

    date.fromtimestamp()

    时间戳直接转成日期格式

    import datetime
    import time
    print(datetime.date.fromtimestamp(time.time()) )  
    

    并不常用 我们直接用time模块的 strftime更方便

    datetime.now()

    放回当前时间的毫秒精度

    import datetime
    print(datetime.datetime.now())
    

    timetuple() & timestamp()

    timetuple获取struct_time格式的时间,timestamp获取时间戳

    import datetime
    import time
    now = datetime.datetime.now()
    print(now)
    print(now.timestamp())
    print(now.timetuple())
    

    时间是可以运算的,在python中的时间运算是很简单的

    直接看代码

    import datetime
    import time
    print(datetime.datetime.now() )
    print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
    print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
    print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
    print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
    print(datetime.datetime.now() + datetime.timedelta(seconds=30)) #当前时间+30分
    

    timedelta函数的参数还有很多,直接查看timedelta的源代码就知道了

    replace()

    datetime.datetime对象的数据替换成另外一个时间
    例子

    import datetime
    import time
    now = datetime.datetime.now()
    print(now)
    print(type(now))
    print(now.replace(year=2008, month=5, day=5, hour=10,
                    minute=10, second=20, microsecond=2))
    

    strptime()

    把一个字符串格式的时间转成datetime的一个类

    import datetime
    import time
    print(datetime.datetime.strptime('2018-10-03 3 14:41:15', "%Y-%m-%d %w %H:%M:%S"))
    

    这里我主要总结了特别常用的一些方法,time和datetime模块内还有很多方法,可以参考一些大佬们的博客文章:

    1. https://blog.csdn.net/qq_24753293/article/details/80954840
    2. https://blog.csdn.net/cityzenoldwang/article/details/78356939
    3. 如果以后发现好的博文还会增加

    相关文章

      网友评论

          本文标题:python time & datetime 模块的基本用法

          本文链接:https://www.haomeiwen.com/subject/pkvaoftx.html