zoukankan      html  css  js  c++  java
  • Python 日期和时间戳的转换

    Python 日期和时间戳的转换

    1. Python中处理时间的模块

    Python中处理时间的模块有timedatetimecalendar

    在Python中表示时间的方式:

    • 时间戳:10位整数位和若干小数位,例如 1551153156.6358607
    • 元组(struct_time):  含有9个元素的元组,例如 (tm_year=2011, tm_mon=9, tm_mday=28, tm_hour=10, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=271, tm_isdst=-1)
    • 格式化字符串: 格式化的时间字符串, 例如 '2019-02-26 12:45:46'

    time模块,以元组(struct_time)为核心实现时间戳和格式化时间字符串的相互转换。

    datetime模块,以datetime类实例对象为核心实现时间戳和格式化时间字符串的相互转换。

    2. Python的time模块

    time模块是通过调用C库实现的,所以在有些平台上无法使用。大部分接口和C标准库的time.h一致。

    使用time模块来进行格式化时间字符串和时间戳的相互转换。

    2.1 将时间戳转换为格式化字符串

    使用time模块获取当前时间的时间戳:   

    >>> import time
    >>> time.time()
    1551157481.034565

     将时间戳转换为元组(struct_time):

    >>> time.localtime(time.time())
    time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=13, tm_min=2, tm_sec=1, tm_wday=1, tm_yday=57, tm_isdst=0)

    元组(struct_time)转换为格式化时间字符串

    >>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    '2019-02-26 13:04:41'

    2.2 将格式化字符串转换为时间戳

    将格式化时间字符串'2019-02-26 13:04:41'转换为时间戳。

    格式化时间字符串转换为元组(struct_time):

    >>> str_time = '2019-02-26 13:04:41'
    >>> time.strptime(str_time, '%Y-%m-%d %H:%M:%S')
    time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=13, tm_min=4, tm_sec=41, tm_wday=1, tm_yday=57, tm_isdst=-1)

    元组(struct_time)转换为时间戳

    >>> time.mktime(time.strptime(str_time, '%Y-%m-%d %H:%M:%S'))
    1551157481.0

    2.3 使用time模块获取当前日期和时间

    使用time模块获取当前日期(使用当前时间的struct_time作为缺省参数)

    >>> time.strftime('%Y-%m-%d')
    '2019-02-26'

    使用time模块获取当前时间(使用当前时间的struct_time作为缺省参数)

    >>> time.strftime('%H:%M:%S')
    '13:21:13'

    3. Python 的datetime模块

    和time模块相比,datetime模块提供更直接易用的接口,功能也更加强大。

    datetime模块提供了处理日期和时间的类,既有简单的方式,也有复杂的方式。它虽然支持日期和时间算法,但其实现是重点是输出的格式化操作和更加有效的属性提取功能。

    3.1 datetime模块中定义的类

    datetime模块中定义的类(这些类的对象都是不可变的):

    • datetime.date: 表示日期,常用的属性有year、month和day
    • datetime.time: 表示时间,常用的属性有hour、minute、second和microsecond
    • datetime.datetime: 表示日期时间
    • datetime.timedelta: 表示两个date、time和datetime实例之间的时间间隔,最小单位可达微秒
    • datetime.tzinfo: 时区相关对象的抽象基类,由time和datetime类使用
    • datetime.timezone: Python3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量

    3.2 使用datetime模块中的datetime类将时间戳转换为格式化时间字符串

    使用datetime类将时间戳转换为datetime实例

    >>> import time
    >>> from datetime import datetime
    >>> dt = datetime.fromtimestamp(time.time())
    >>> dt
    datetime.datetime(2019, 2, 26, 15, 27, 28, 678923)

    datetime实例转换为格式化字符串

    >>> dt.strftime('%Y-%m-%d %H:%M:%S')
    '2019-02-26 15:27:28'

    3.3 使用datetime模块中的datetime类将格式化时间字符串转换为时间戳

    使用datetime类将格式化字符串'2019-02-26 15:27:28'转换为datetime实例

    >>> st = '2019-02-26 15:27:28'
    >>> dt = datetime.strptime(st, '%Y-%m-%d %H:%M:%S')
    >>> dt
    datetime.datetime(2019, 2, 26, 15, 27, 28)

    datetime实例转转为元组(struct_time)

    >>> tp = dt.timetuple()
    >>> tp
    time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=15, tm_min=27, tm_sec=28, tm_wday=1, tm_yday=57, tm_isdst=-1)

    元组(struct_time)转换为时间戳

    >>> time.mktime(tp)
    1551166048.0

    也可以直接使用datetime实例的timestamp()函数直接获取时间戳:

    >>> dt.timestamp()
    1551166048.0

    3.4 使用datetime类获取当前日期和时间

    使用datetime类获取当前日期

    >>> datetime.now().date().strftime('%Y-%m-%d')
    '2019-02-26'

    使用datetime类获取当前时间

    >>> datetime.now().time().strftime('%H:%M:%S')
    '15:48:43'

    4. 参考资料

  • 相关阅读:
    python计算机基础
    计算机基础知识
    ftok函数
    可重入函数与不可重入函数
    Redis学习资料整理
    小记6月18
    libxml2简单的生成、解析操作
    切换日志是否更新检查点?
    第五课 数据备份恢复实验
    第四课 Grid Control实验 GC Agent安装(第一台机器部署) 及卸载
  • 原文地址:https://www.cnblogs.com/strivepy/p/10436213.html
Copyright © 2011-2022 走看看