zoukankan      html  css  js  c++  java
  • 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)
    

      

      

  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10119818.html
Copyright © 2011-2022 走看看