zoukankan      html  css  js  c++  java
  • 模块time, datetime的用法

    一. time

     time库提供了各种操作时间的方法
     
    1. time.asctime([tuple]):将一个时间元组转换成一个可读的24个时间字符串. 
    >>> time.asctime(time.localtime())
     'Mon Jun 11 11:19:10 2018'
     
    2. time.ctime():字符串类型返回当前时间
    'Mon Jun 11 11:20:12 2018'
     
    3. time.localtime():默认将当前时间转为struct_time格式类型
    >>>time.localtime()
    time.struct_time(tm_year=2018, tm_mon=6, tm_mday=11, tm_hour=11, tm_min=21, tm_sec=59, tm_wday=0, tm_yday=162, tm_isdst=0)
    可以用time.localtime()[x]来取元组里面的值,[0]就是2017年份,tm_wday是周几,ubuntu好像周一是用0表示的。
     
    4. time.sleep(seconds):延迟执行给定的秒数
    time.sleep(3)
     
    5. time.strftime(format[,tuple]): 将元组时间转换为指定时间格式,当tuple不指定时间时,默认为当前时间。
    >>> time.strftime('%Y-%m-%d %H:%M:%S')
    '2018-06-11 11:29:12'
    
    6. time.mktime():将一个struct_time转为时间戳
    >>> time.mktime(time.localtime())
    1528687466.0
     
    例子1,把指定的一个日期转换成时间戳
    >>> a="2014-10-10 23:40:30"
    >>> timearray=time.strptime(a,'%Y-%m-%d %H:%M:%S')  # 将其转换为时间数组,使用strptime()可以转换成struct_time
    >>> timearray
    time.struct_time(tm_year=2014, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=30, tm_wday=4, tm_yday=283, tm_isdst=-1)
    >>> timestap=int(time.mktime(timearray)) #转换成时间戳
    >>> print timestap
    1412955630
     
    

      

     
    时间戳的作用是给时间加密,那么怎么把时间戳还原呢?
     
    >>> timestamp=1505874314.0
    >>> timearray=time.localtime(timestamp)
    >>> styletime=time.strftime("%Y-%m-%d %H:%M:%S",timearray)
    >>> print styletime
    2017-09-20 10:25:14
    

      

    可参考 
    1) 时间戳转换为指定格式日期的方法2,比实际时间差8个小时,utc国际时间的原因吧
    2)获取当前时间并转换为指定日期格式,方法1的代码第5行参数,应该是now
     
     
     
     
     
     

    二. datetime模块

     
    常用的几个类如下
     
    1. datetime.date()类
    from datetime import date
    from datetime import datetime
    1)对象能表示的最大时间 >>> date.max datetime.date(9999, 12, 31) 2)对象能表示的最小时间 >>> date.min datetime.date(1, 1, 1) 3)根据datetime自定义时间格式,这里用到了datetime类,需要导入from datetime import datetime >>> date.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S') '2018-06-11 14:00:05' 4)返回当前系统时间 >>> date.today() datetime.date(2018, 6, 11) 5)返回iso格式日期 >>> date.isoformat(date.today()) '2018-06-11' 6)返回时间戳日期 >>> date.fromtimestamp(time.time()) datetime.date(2018, 6, 11) 7)根据日期返回是周几,里面的参数需要是datetime.date()对象类型,星期一是用0表示。 >>> date.weekday(date.today()) 0 8)根据日期返回星期几,星期一用1表示 >>> date.isoweekday(date.today()) 1 9)根据日期返回日历(年,第几周,星期几) >>> date.isocalendar(date.today()) (2018, 24, 1)

      

     
    2. datetime.datetime()
    from datetime import datetime
    
    1)获取当前系统时间
    >>> datetime.now()
    datetime.datetime(2018, 6, 11, 14, 22, 51, 442684)
    >>> datetime.today()
    datetime.datetime(2018, 6, 11, 14, 23, 21, 721145)
    
    >>>print(datetime.now())
    2018-06-11 14:22:51.442684
    2) 返回ISO 8601格式时间
    >>> datetime.isoformat(datetime.now())
    '2018-06-11T14:27:17.590074'
    
    3)返回有年月日的对象
    >>> datetime.date(datetime.now())
    datetime.date(2018, 6, 11)
    
    4)返回有时分秒的对象
    >>> datetime.time(datetime.now())
    datetime.time(14, 30, 7, 982648)
    
    5)返回UTC时间,比中国时间早8个小时
    >>> datetime.utcnow()
    datetime.datetime(2018, 6, 11, 6, 31, 34, 506562)
    

      

     
     
     
     
     
     
    3. datetime.timedelta():用于时间间隔
    from datetime import timedelta
    from datetime import date
    
    1)获取昨天的日期
    >>> date.today() - timedelta(days=1)
    datetime.date(2018, 6, 10)
    
    >>> date.isoformat(date.today()-timedelta(days=1))
    '2018-06-10'
    
    2)获取明天的日期
    >>> date.today()+timedelta(days=1)
    datetime.date(2018, 6, 12)
    >>> date.isoformat(date.today()+timedelta(days=1))
    '2018-06-12'
    

      

     
                                                                           
     
    几个练习题
     
    1. 用datetime获取当前的日期,例如:2013-03-29
    from datetime import date
    >>> date.today()
    datetime.date(2018, 6, 11)
    
    >>> print (date.today())  #使用print()函数可以只打印出具体日期
    2018-06-11
    
     
    2. 用datetime返回一个月前的日期:比如今天是2013-3-29 一个月前的话:2013-02-27
    解答:
    >>> now=date.today()
    >>> print now
    2017-09-18
    >>> onemonthago=now-datetime.timedelta(days=30)
    >>> print onemonthago
    2017-08-19
     
    3. 
    >>> date=datetime.datetime(2013,03,29) - datetime.timedelta(days=30)
    >>> print date
    2013-02-27 00:00:00
    >>> time_format=date.strftime('%Y%m%d')
    >>> print time_format
    20130227
    

      

     
     
  • 相关阅读:
    JS设计模式之----单例模式
    回流(reflow)与重绘(repaint)
    React native 图标使用
    JS常用几种存储方式的使用规则与各自特征
    Vue
    Promise 一自我总结
    三栏布局 && 两栏布局
    linux限制用户目录
    wireshark 抓包过滤
    python之tomcat自动化备份,更新
  • 原文地址:https://www.cnblogs.com/regit/p/8515299.html
Copyright © 2011-2022 走看看