• time和datetime


    一、time模块
    常用函数
    1. time()函数
    time()函数返回的是时间戳(timestamp)。所谓时间戳指的是从1970年1月1日00:00:00开始按秒计算的偏移量。其他返回时间戳方式的函数还有clock()。

    实例

    import time
    time.time()

    1515117751.8810253

    2. ctime()函数
    ctime()函数可以将一个时间戳转化为字符串的形式,默认time.time()为参数。(convert time in seconds to string)

    实例

    import time
    time.ctime()
    'Fri Jan 5 10:21:29 2018'
    time.ctime(1500000000)
    'Fri Jul 14 10:40:00 2017'

    4.gmtime()函数
    gmtime()用于获取UTC时间,UTC时间实际就是格林尼治时间,它与中国时间的时差为八个小时。

    实例

    import time
    time.gmtime()
    time.struct_time(tm_year=2018, tm_mon=1, tm_mday=5, tm_hour=3, tm_min=27, tm_sec=18, tm_wday=4, tm_yday=5, tm_isdst=0)

    5. localtime()函数

    localtime()用于获取当前时区的当前时间。

    实例

    import time
    time.localtime()
    time.struct_time(tm_year=2018, tm_mon=1, tm_mday=5,tm_hour=11, tm_min=28, tm_sec=48, tm_wday=4, tm_yday=5, tm_isdst=0)


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

    实例

    time.strftime("%Y-%m-%d %X")
    '2018-01-05 11:20:21'
    time.strftime("%Y-%m-%d %H:%M:%S")
    '2018-01-05 11:21:30'
    time.strftime("%Y-%m-%d %X", time.localtime())
    '2018-01-05 11:23:04'


    * format time格式化表示*

    格式 含义
    %Y 完整的年份
    %m 月份(01 - 12)
    %d 一个月中的第几天(01 - 31)
    %H 一天中的第几个小时(24小时制,00 - 23)
    %M 分钟数(00 - 59)
    %S 秒(01 - 61)
    %X 本地相应时间
    %x 本地相应日期
    %a 本地(locale)简化星期名称
    %A 本地完整星期名称
    %b 本地简化月份名称
    %B 本地完整月份名称
    %c 本地相应的日期和时间表示
    %I 第几个小时(12小时制,01 - 12)
    %j 一年中的第几天(001 - 366)
    %p 本地am或者pm的相应符
    %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)
    %w 一个星期中的第几天(0 - 6,0是星期天)
    %W 和%U基本相同,不同的是%W以星期一为一个星期的开始
    %y 去掉世纪的年份(00 - 99)
    %Z 时区的名字(如果不存在为空字符)
    %% ‘%’字符
    注:表中加粗部分为最常用格式

    7. strptime()函数
    strptime()把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作

    实例

    import time
    time.strptime('2018-01-05 10:50:06','%Y-%m-%d %X') 
    time.struct_time(tm_year=2018,tm_mon=1,tm_mday=5,tm_hour=10,tm_min=50,tm_sec=6, tm_wday=4, tm_yday=5, tm_isdst=-1)


    8. mktime()函数
    mktime()可以将struct_time转换成用时间的浮点数表示

    实例

    time.mktime(time.gmtime())
    1515094387.0
    time.mktime(time.localtime())
    1515123246.0

    9. sleep()函数
    线程推迟指定的时间运行,单位为秒。

    import time
    time.sleep(3) #表示延迟3秒后程序继续运行

    小结:
    time模块中时间表现的格式主要有3种:
    1. timestamp 时间戳
    2. tuple或者struct_time 时间元组,共有九个元素组
    3. formattime格式化字符串

    它们之间的转化如图所示:


    二、datetime模块
    datetime模块包含一个datetime类,通过from datetime import datetime导入的就是datetime这个类。

    常见操作
    1. 获取当前日期

    from datetime import datetime
    now = datetime.now()
    now
    datetime.datetime(2018, 1, 5, 16, 2, 47, 929705)
    print(now)
    2018-01-05 16:02:47.929705


    2. 获取指定日期和时间

    from datetime import datetime
    dt=datetime(2018, 1, 1, 1, 1)
    print(dt)
    2018-01-01 01:01:00

    3. datetime类型转换为timestamp
    只需要简单调用timestamp()方法

    from datetime import datetime
    dt=datetime(2018, 1, 1, 1, 1)
    dt.timestamp()
    1514739660.0


    4. timestamp转换为datetime
    使用datetime提供的fromtimestamp()方法

    from datetime import datetime
    t = 1514739660.0
    print(datetime.fromtimestamp(t))
    2018-01-01 01:01:00


    5. str转换为datetime
    当日期和时间为字符串时,需要把str转换为datetime,可通过datetime.strptime()实现。

    from datetime import datetime
    dt= datetime.strptime('2018-1-1 1:11:11', '%Y-%m-%d %H:%M:%S')
    print(dt)
    2018-01-01 01:11:11


    6. datetime转换为str
    如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的。

    from datetime import datetime
    now = datetime.now()
    now
    datetime.datetime(2018, 1, 5, 16, 22, 50, 394736)
    now.strftime('%Y-%m-%d %H:%M:%S')
    '2018-01-05 16:22:50'


    7. datetime加减
    对日期和时间进行加减需要导入timedelta这个类

    from datetime import datetime, timedelta
    now = datetime.now()
    now
    datetime.datetime(2018, 1, 5, 16, 22, 50, 394736)
    now + timedelta(hours=10)
    datetime.datetime(2018, 1, 6, 2, 22, 50, 394736)
    now - timedelta(days=10)
    datetime.datetime(2017, 12, 26, 16, 22, 50, 394736)
    now + timedelta(days=10, hours=12)
    datetime.datetime(2018, 1, 16, 4, 22, 50, 394736)


    小结
    datetime模块定义了5个类:

    序号 类 含义
    1 datetime.datetime 表示日期时间的类
    2 datetime.timedelta 表示时间间隔,即两个时间点的间隔
    3 datetime.date 表示日期的类
    4 datetime.time 表示时间的类
    5 datetime.tzinfo 时区的相关信息

    # 转成时间戳
    a= "2018-02-03 15:01:32"
    timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")
    timeStamp = int(time.mktime(timeArray))
    

      

    # 转时间格式
    import datetime
    time = "20180312"
    img_time = datetime.datetime.strptime(time, "%Y%m%d").strftime("%Y-%m-%d")
    

      

    #导入日期时间模块
    import datetime
    #获得今天的日期
    today = datetime.date.today() 
    #用今天日期减掉时间差,参数为1天,获得昨天的日期
    yesterday = today - datetime.timedelta(days=1) 
    #用今天日期加上时间差,参数为1天,获得明天的日期
    tomorrow = today + datetime.timedelta(days=1) 
    # 一个月的第一天
    fist = datetime.date(datetime.date.today().year, datetime.date.today().month - 1, 1)
    # 一个月的最后一天
    last = datetime.date(datetime.date.today().year, datetime.date.today().month, 1) - datetime.timedelta(1)   
    

    时间戳转日期

    time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(1517974137)))
    time.strftime('%Y-%m-%d %H:%M:%S', time.time.localtime())
    

    日期循环

    import datetime
    
    begin = datetime.date(2019, 8, 1)
    end = datetime.date(2019, 10, 14)
    for i in range((end - begin).days + 1):
        day = str(begin + datetime.timedelta(days=i))
        print(day)
    

      

      

  • 相关阅读:
    Android音视频之MediaRecorder音视频录制
    Android数据加密之Des加密
    Java设计模式之模板模式(Template )
    Android图片缓存之Glide进阶
    Android图片缓存之初识Glide
    Android图片缓存之Bitmap详解
    Java设计模式之单例模式(Singleton)
    Java设计模式之工厂模式(Factory)
    Java设计模式之建造者模式(Builder)
    Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10119818.html
Copyright © 2020-2023  润新知