• Python3学习笔记30-datetime模块


    datetime是Python处理日期和时间的标准库

    获取当前的日期和时间

    from datetime import datetime
    now = datetime.now()
    print(now)
    print(type(now))

    from datetime import datetime 第一个datetime是模块,第二个datetime是该模块下的类。

    这个类下面的.now()返回当前日期和时间,其类型是datetime

    如果只写import datetime。需要datetime.datetime.now()

    获取指定日期和时间

    from datetime import datetime
    dt = datetime(2017,4,19,23,45)
    print(dt)

    通过传入参数可直接获得指定的日期和时间

    datetime转换为timestamp

    1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为0。当前时间相对于epoch time的秒数,称为timestamp,1970年前的时间timestamp为负数 。

    假定时间已校准,那么全球各地的计算机任意时刻的timestamp都是完全相同的,所以计算机存储的当前时间用timestamp表示。

    调用timestamp()方法,将datetime转换成timestamp

    from datetime import datetime
    dt = datetime(2017,4,19,23,45)
    print(dt)
    ts = dt.timestamp()
    print(ts)

    timestamp转换成datetime

    from datetime import datetime
    dt = datetime(2017,4,19,23,45)
    print(dt)
    ts = dt.timestamp()
    print(ts)
    print(datetime.fromtimestamp(ts))
    print(datetime.utcfromtimestamp(ts))

    使用fromtimestamp()可将timestamp转换成本地时间

    使用utcfromtmestamp()可将timestamp转成成utc时间

    因为北京是utc+8:00,所以utc时间会减少八小时

    str转换成datetime

    from datetime import datetime
    times = '2015-12-24 18:29:30'
    print(type(times))
    cd = datetime.strptime(times,'%Y-%m-%d %H:%M:%S')
    print(type(cd))

    通过datetime.strptime()实现,需要一个日期和时间的格式化字符串,格式可参考python文档。转换后的datetime没有时区信息

    datetime转换成str

    from datetime import datetime
    now = datetime.now()
    print(now.strftime('%a, %b %d %H:%M:%S'))

    使用strftime()可将datetime转换成对应格式的str

    datetime加减

    from datetime import datetime,timedelta
    now = datetime.now()
    print(now)
    print(now+timedelta(days=1,hours=10))

    通过timedelta类,使用+,- 可计算前几天或后几天的时间

    本地时间转换为utc时间

    本地时间是指系统设置时区的时间,比如北京时间是UTC+8:00时区的时间,而UTC时间是指UTC+0:00的时间

    datetime类型有时区属性tzinfo,但是默认为None,可以通过给date设置时区来区分哪个时区

    from datetime import datetime,timedelta,timezone
    tz = timezone(timedelta(hours=8))#创建时区UTC+8:00
    now = datetime.now()
    print(now)
    dt = now.replace(tzinfo=tz)#设置为UTC+8:00
    print(dt)

    时区转换

    from datetime import datetime,timedelta,timezone
    utc = datetime.utcnow().replace(tzinfo = timezone.utc)#拿到当前utc时间,并将时区设置为utc+0:00
    print(utc)
    bj = utc.astimezone(timezone(timedelta(hours=8)))#将时区转换为北京时间
    print(bj)

    使用utcnow()可获得当前utc时间,使用带时区的datetime,通过astimezone()方法,可以转换到任意时区

    练习

    假设你获取了用户输入的日期和时间如2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp:

    from datetime import datetime, timezone, timedelta
    
    def to_timestamp(dt_str, tz_str):
        time1 = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
        hours = int(tz_str[3:tz_str.index(':')])
        tz = timezone(timedelta(hours=hours))
        dt = time1.replace(tzinfo=tz)
        return dt.timestamp()
    
    
    t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')
    assert t1 == 1433121030.0, t1
    
    t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')
    assert t2 == 1433121030.0, t2
    
    print('ok')
  • 相关阅读:
    WPF做的小型音乐播放器升级版
    WPF做的小型下载工具和一点点吐槽
    js小技巧摘录1
    关于浏览器缓存设置
    js高阶函数应用—函数防抖和节流
    ES6中let和闭包
    js高阶函数应用—函数柯里化和反柯里化(二)
    js继承的实现(es5)
    js高阶函数应用—函数柯里化和反柯里化
    前端回答从输入URL到页面展示都经历了些什么
  • 原文地址:https://www.cnblogs.com/myal/p/9361711.html
Copyright © 2020-2023  润新知