python-datetime

Python - 内置模块datatime

  1. time模块
    time模块中时间表现的格式主要有三种:

    • timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
    • struct_time时间元组,共有九个元素组。
    • format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
    import time
    #1.获得当前时间的时间戳,时间戳加减以秒为单位
    #      时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
    begin_time=time.time()
    print(begin_time)               #1532517163.669289
    #     struct_time to timestamp
    print(time.mktime(time.localtime()))  #1532517163.0
    #2.生成struct_time
    print(time.localtime())        #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=9, tm_sec=58, tm_wday=2, tm_yday=206, tm_isdst=0)
    #     时间戳向struct_time转换
    print(time.localtime(time.time())) #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=9, tm_sec=58, tm_wday=2, tm_yday=206, tm_isdst=0)
    #3.生成format_time
    #     format_time to struct_time
    print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))  #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
    #     struct_time to format_time
    print(time.strftime("%Y-%m-%d %X",time.localtime()))      #2018-07-25 19:21:36
    

    格式参数:

    %Y 带世纪部分的十制年份

    %m 十进制表示的月份

    %d 十进制表示的每月的第几天

    %H 24小时制的小时

    %M 十时制表示的分钟数

    %S 十进制的秒数

    %c 标准时间,如:04/25/17 14:35:14 类似于这种形式

    %X 本地响应时间

  2. datatime

    datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。

    1. 获取当前时间
    date_now=datetime.now()
    frm_date=date_now.strftime('%Y-%m-%d')
    print(frm_date)
    
    1. date类
    from datetime import *
    import time
    #     静态方法和字段
    print(date.max,date.min,date.today())   #9999-12-31 0001-01-01 2018-07-25
    #         时间戳转时间对象
    print(date.fromtimestamp(time.time()))  #2018-07-25
    #    方法和属性
    d1 = date(2011,6,3)
    #         年,月,日
    print(d1.year,d1.month,d1.day)
    #         生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
    tomorrow = d1.replace(day = 27)
    print(tomorrow)
    #         返回日期对应的time.struct_time对象
    print(d1.timetuple())
    #         时间对象转时间戳
    timestamp=int(time.mktime(d1.timetuple()))
    print(timestamp)      #1307030400
    #         返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推
    d1.weekday()
    d1.isoweekday() #往后推1
    d1.isocalendar()  #返回格式如(year,month,day)的元组
    #         strftime和time模块一样
    
    1. time类

    time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

    time.resolution:时间的最小单位,这里是1微秒;

    t1 = datetime.time(10,23,15)#time对象
    t1.hour;t1.minute;t1.second;t1.microsecond#时、分、秒、微秒;
    t1.tzinfo#时区信息;
    t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )#创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变)
    t1.isoformat()#返回型如"HH:MM:SS"格式的字符串表示
    t1.strftime(fmt)#同time模块中的format
    
    1. datetime类
      相当于date和time结合起来,方法和time,date差不多
    print(datetime.today(),datetime.now())   #2018-07-25 20:08:20.443733
    print(datetime.fromtimestamp(time.time()))  #时间戳转时间
    print(datetime.combine(date,time))
    
    1. timedelta类:时间加减
    dt = datetime.now()
    #日期减一天
    dt1 = dt + timedelta(days=-1)#昨天
    dt2 = dt - timedelta(days=1)#昨天
    dt3 = dt + timedelta(days=1)#明天
    delta_obj = dt3-dt
    print type(delta_obj),delta_obj#<type 'datetime.timedelta'> 1 day, 0:00:00
    print delta_obj.days ,delta_obj.total_seconds()#1 86400.0
    

    使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。 ```

  3. 时间格式的相互转换

    # 1. 字符串转datetime
    string = '2017/11/10 02:29:58'.replace('/','-')
    # string = '2017-11-10 02:29:58'
    time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
    print(time1)
    print(type(time1))
    
    # 2. datetime转string
    time1_str = datetime.strftime(time1, '%Y-%m-%d %H:%M:%S')
    print(type(time1_str))
    print(time1_str)
    
    # 3. 时间戳转时间对象
    
    time2=time.time()  #时间戳
    time2_str = datetime.fromtimestamp(time2)
    
    print(time2_str)
    
    # 4. 时间对象转为时间戳
    timeStamp = int(time.mktime(date_now.timetuple()))
    print(timeStamp)
    
    # 5. 计算时间差
    
    days=(date_now-time1).days
    seconds=(date_now-time1).seconds
    print(seconds)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值