190211-Python之时间和日期使用小结

文章目录
  1. 1. 基本包引入
  2. 2. 获取当前时间
    1. a. time
    2. b. datetime
  3. 3. 时间戳转datetime
  4. 4. 时间戳转格式化日期
    1. a. time
    2. b. datetime
  5. 5. 字符串转时间戳
  6. 6. 字符串转datetime
  7. 7. datetime 转字符串
  8. 8. datetime 转时间戳
  9. 9. datetime转struct_time
  10. 10. 日期加减操作
  11. 11. 格式化符号
  • II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注
  • 对于日期的操作可以说是比较常见的case了,日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现

    1. 基本包引入

    主要需要引入时间和日期的处理包,后面的基本操作都是基于此

    1
    2
    import datetime
    import time

    2. 获取当前时间

    获取当前时间,有几种方式,分别使用time和datetime来演示

    a. time

    获取当前时间,格式化为字符串输出

    1
    2
    now = time.strftime("%Y-%m-%d %H:%M:%S")
    print(now)

    获取当前时间,以时间戳方式输出,结果为float类型,单位为s

    1
    2
    now=time.time()
    print(now)

    img

    b. datetime

    直接调用now()函数获取当前时间,返回datetime类型对象

    1
    2
    now = datetime.datetime.now()
    print(now)

    img

    3. 时间戳转datetime

    函数: datetime.datetime.fromtimestamp()

    将时间戳转换为datetime类型,因为后者可以进行日期的计算(如常见的加减或者格式化)

    1
    2
    3
    4
    5
    # 获取当前的时间戳
    now = time.time()
    # 将时间差转换为datetime对象
    date = datetime.datetime.fromtimestamp(now)
    print(date)

    img

    4. 时间戳转格式化日期

    a. time

    函数 time.strftime(format, localtime)time.localtime(timestamp)

    借助time的time.strftime函数来实现转换,这里还需要做一个额外的处理,将时间戳转换为struct_time 对象

    1
    2
    3
    now = time.time()
    # 首先格式化时间戳为struct_time对象,接着格式化输出
    time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))

    img

    b. datetime

    函数 datetime.datetime.fromtimestampdatetime.datetime.strftime()

    借助前面的知识点即可实现,先将timestamp转换为datetime, 然后将datetime格式化为字符串

    1
    2
    3
    now=time.time()
    date =datetime.datetime.fromtimestamp(now)
    date.strftime('%Y-%m-%d %H:%M:%S')

    img

    5. 字符串转时间戳

    函数 strptime(str) 与 time.mktime(struct_time)

    前面格式化输出字符串时,主要利用的是strftime,这里则主要使用 strptime

    1
    2
    3
    now='2019-02-11 18:45:22'
    struct_time=time.strptime(now , '%Y-%m-%d %H:%M:%S')
    timestamp=time.mktime(struct_time)

    img

    6. 字符串转datetime

    函数 datetime.datetime.strptime(str, format)

    依然使用strptime函数来实现转换

    1
    2
    now='2019-02-11 18:45:22'
    date=datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S')

    7. datetime 转字符串

    函数 datetime.datetime.strftime(format)

    利用strftime来实现

    1
    2
    now = datetime.datetime.now()
    now.strftime('%Y-%m-%d %H:%M:%S')

    img

    8. datetime 转时间戳

    函数 datetime.datetime.timestamp()

    结合前面的这个就比较好实现了

    1
    2
    now = datetime.datetime.now()
    now.timestamp()

    img

    9. datetime转struct_time

    1
    2
    3
    4
    5
    now = datetime.datetime.now()
    # 转换为 struct_time 对象
    t=now.timetuple()
    # struct_time 输出时间戳
    timestamp=time.mktime(t)

    img

    10. 日期加减操作

    函数 datetime.timedelta

    日期的加减操作,这里主要是datetime对象来操作,一个简单的例子如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    now = datetime.datetime.now()

    # 前一小时
    d1 = now - datetime.timedelta(hours=1)
    print(d1.strftime("%Y-%m-%d %H:%S:%M"))

    # 前一天
    d2 = now - datetime.timedelta(days=1)
    print(d2.strftime("%Y-%m-%d %H:%S:%M"))

    # 上周日
    d3 = now - datetime.timedelta(days=now.isoweekday())
    print(d3.strftime("%Y-%m-%d %H:%S:%M"), " ", d3.isoweekday())

    # 上周一
    d31 = d3 - datetime.timedelta(days=6)
    print(d31.strftime("%Y-%m-%d %H:%S:%M"), " ", d31.isoweekday())

    # 上个月最后一天
    d4 = now - datetime.timedelta(days=now.day)
    print(d3.strftime("%Y-%m-%d %H:%S:%M"))

    # 上个月第一天
    print(datetime.datetime(d4.year, d4.month, 1))

    img

    11. 格式化符号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    %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 # 当前时区的名称
    %% # %号本身

    II. 其他

    1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

    一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

    2. 声明

    尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    3. 扫描关注

    一灰灰blog

    QrCode

    知识星球

    goals

    评论

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×