zoukankan      html  css  js  c++  java
  • Python日期时间(详细)

    获取当前时间戳

    import time
    
    t = time.time()
    
    millis1 = int(t)
    print('10位时间戳:{}'.format(millis1))
    
    millis2 = int(t * 1000)
    print('13位时间戳:{}'.format(millis2))

    打印结果:
    10位时间戳:1594800086
    13位时间戳:1594800086816

    格式化时间

    import time
    
    now = time.strftime("%Y-%m-%d %H:%M:%S")
    print('当前时间格式化:{}'.format(now))
    
    now2 = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1594368331))
    print('指定时间格式化:{}'.format(now2))

    打印结果:
    当前时间格式化:2020-07-15 16:08:57
    指定时间格式化:2020-07-10 16:05:31

    格式化符号表:
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %M 分钟数(00=59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身

    格式化时间转时间戳

    import time
    
    str = '2020-07-10 16:05:31'
    ts = time.mktime(time.strptime(str,"%Y-%m-%d %H:%M:%S"))
    print('格式化时间转时间戳:{}'.format(int(ts)))

    打印结果:
    格式化时间转时间戳:1594368331

    时间元组+拆分时间

    当前时间元组

    import time
    t_tuple = time.localtime()
    print('当前时间元组:{}'.format(t_tuple))
    print('当前年:{}'.format(t_tuple.tm_year))
    print('当前月:{}'.format(t_tuple.tm_mon))
    print('当前日:{}'.format(t_tuple.tm_mday))
    print('当前时:{}'.format(t_tuple.tm_hour))
    print('当前分:{}'.format(t_tuple.tm_min))
    print('当前秒:{}'.format(t_tuple.tm_sec))
    print('当前周几:{}'.format(t_tuple.tm_wday))
    print('当前是一年中第几天:{}'.format(t_tuple.tm_yday))
    print('当前是否是夏令时:{}'.format(t_tuple.tm_isdst))

    打印结果:
    当前时间元组:time.struct_time(tm_year=2020, tm_mon=7, tm_mday=15, tm_hour=16, tm_min=59, tm_sec=45, tm_wday=2, tm_yday=197, tm_isdst=0)
    当前年:2020
    当前月:7
    当前日:15
    当前时:16
    当前分:59
    当前秒:45
    当前周几:2
    当前是一年中第几天:197
    当前是否是夏令时:0

    时间戳转时间元组

    import time
    
    t_tuple2 = time.localtime(1594368331)
    print('时间戳转时间元组:{}'.format(t_tuple2))

    打印结果:
    时间戳转时间元组:time.struct_time(tm_year=2020, tm_mon=7, tm_mday=10, tm_hour=16, tm_min=5, tm_sec=31, tm_wday=4, tm_yday=192, tm_isdst=0)

    格式化时间转时间元组

    import time
    
    tts = time.strptime('2018-09-30 11:32:23', '%Y-%m-%d %H:%M:%S')
    print('格式化时间转时间元组:{}'.format(tts))

    打印结果:
    格式化时间转时间元组:time.struct_time(tm_year=2018, tm_mon=9, tm_mday=30, tm_hour=11, tm_min=32, tm_sec=23, tm_wday=6, tm_yday=273, tm_isdst=-1)

    时间元组转时间戳

    import time
    
    tt = time.mktime((2020, 7, 10, 16, 5, 31, 0, 0, 0))
    print('时间元组转时间戳:{}'.format(int(tt)))

    打印结果:
    时间元组转时间戳:1594368331

    获取今天日期

    下面两种写法 效果相同 前者是格式化时间的方法 可以传入任意时间戳指定返回任意格式  后者是专门为获取今天日期提供的方法

    import time
    import datetime
    
    today1 = time.strftime("%Y-%m-%d")
    print(today1)
    
    today2 = datetime.date.today()
    print(today2)

    打印结果:
    2020-07-15
    2020-07-15

    today方法的结果还可以进一步转化成元组:

    import datetime
    
    d = datetime.date.today().timetuple()
    print(d)

    打印结果:
    time.struct_time(tm_year=2020, tm_mon=7, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=197, tm_isdst=-1)

    时间戳转日期格式

    import time
    import datetime
    
    d1 = time.strftime('%Y-%m-%d',time.localtime(1594804107))
    print('时间戳转日期:{}'.format(d1))
    
    d2 = datetime.date.fromtimestamp(1594804107)
    print('时间戳转日期:{}'.format(d2))

    打印结果:
    2020-07-15
    2020-07-15

    两个日期相差天数

    import datetime
    
    a = datetime.date(2020, 7, 1)
    b = datetime.date(2020, 7, 15)
    print('b的日期减去a的日期:{}'.format(b.__sub__(a).days))
    print('a的日期减去b的日期:{}'.format(a.__sub__(b).days))

    打印结果:
    b的日期减去a的日期:14
    a的日期减去b的日期:-14

    获取几天/小时/分 之前/之后的时间

    import datetime
    
    # 3小时之后
    later_hours = datetime.datetime.now() + datetime.timedelta(hours=3)
    print(later_hours.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 3小时之后的时间戳
    print(int(later_hours.timestamp()))
    
    # 10分钟之后
    later_minutes = datetime.datetime.now() + datetime.timedelta(minutes=10)
    print(later_minutes.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 10分钟之后的时间戳
    print(int(later_minutes.timestamp()))
    
    # 7天之后
    later_days = datetime.datetime.now() + datetime.timedelta(days=7)
    print(later_days.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 7天之后的时间戳
    print(int(later_days.timestamp()))
    import datetime
    
    # 3小时之前
    before_hours = datetime.datetime.now() - datetime.timedelta(hours=3)
    print(before_hours.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 3小时之前的时间戳
    print(int(before_hours.timestamp()))
    
    # 10分钟之前
    before_minutes = datetime.datetime.now() - datetime.timedelta(minutes=10)
    print(before_minutes.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 10分钟之前的时间戳
    print(int(before_minutes.timestamp()))
    
    # 7天之前
    before_days = datetime.datetime.now() - datetime.timedelta(days=7)
    print(before_days.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 7天之前的时间戳
    print(int(before_days.timestamp()))

    获取上个月开始结束时间

    import datetime
    
    # 上个月第一天
    date = datetime.datetime.today()
    year,month = date.year,date.month
    if month == 1:
        startDate = datetime.date(year-1, 12, 1)
    else:
        startDate = datetime.date(year, month-1, 1)
    print(startDate)
    
    # 上个月最后一天
    today = datetime.datetime.today()
    endDate = datetime.date(today.year, today.month, 1) - datetime.timedelta(days=1)
    print(endDate)

    打印结果:
    2020-06-01
    2020-06-30

    import datetime
    
    # 上个月开始时间戳
    if month == 1:
        startTime = int(time.mktime(datetime.date(year-1,12,31).timetuple()))
    else:
        startTime = int(time.mktime(datetime.date(datetime.date.today().year,datetime.date.today().month-1,1).timetuple()))
    print(startTime)
    
    # 上个月结束时间戳
    endTime = int(time.mktime(datetime.date(datetime.date.today().year,datetime.date.today().month,1).timetuple())) - 1
    print(endTime)

    打印结果:
    1590940800
    1593532799

    获取本月开始结束时间

    import datetime
    import time
    
    # 本月第一天
    date = datetime.datetime.today()
    year,month = date.year,date.month
    startDate = datetime.date(year, month, 1)
    print(startDate)
    
    # 本月最后一天
    today = datetime.datetime.today()
    if month == 12:
        endDate = datetime.date(year, month, 31)
    else:
        endDate = datetime.date(today.year, today.month + 1, 1) - datetime.timedelta(days=1)
    print(endDate)

    打印结果:
    2020-07-01
    2020-07-31

    import datetime
    import time
    
    # 本月开始时间戳
    startTime = int(time.mktime(datetime.date(datetime.date.today().year,datetime.date.today().month,1).timetuple()))
    print(startTime)
    
    # 本月结束时间戳
    if month == 12:
        endTime = int(time.mktime(datetime.date(datetime.date.today().year + 1,1, 1).timetuple())) - 1
    else:
        endTime = int(time.mktime(datetime.date(datetime.date.today().year,month+1, 1).timetuple())) - 1
    print(endTime)

    打印结果:
    1593532800
    1609430399

    获取本周上周时间

    import datetime
    import time
    
    # 本周一的时间
    today = datetime.datetime.today()
    monday_date = today - datetime.timedelta(today.isoweekday()-1)
    t = monday_date.strftime('%Y-%m-%d')
    print(t)
    
    # 本周一的时间戳
    ts = time.mktime(time.strptime(t,"%Y-%m-%d"))
    print(int(ts))
    
    # 上周一的时间
    last_monday_date = today - datetime.timedelta(days=today.weekday()+7)
    ta = last_monday_date.strftime('%Y-%m-%d')
    print(ta)
    
    # 上周一的时间戳
    tas = time.mktime(time.strptime(ta,"%Y-%m-%d"))
    print(int(tas))
    
    # 上周的结束时间
    last_over_date = today - datetime.timedelta(days=today.weekday()+1)
    o = last_over_date.strftime('%Y-%m-%d')
    print(o)
    
    # 上周的结束时间戳
    oa = time.mktime(time.strptime(o,"%Y-%m-%d"))
    oat = int(oa)+86400-1
    print(oat)

    打印结果:
    2020-07-13
    1594569600
    2020-07-06
    1593964800
    2020-07-12
    1594569599

    获取今年去年时间

    import datetime
    import time
    
    today = datetime.datetime.today()
    
    # 今年开始时间
    start_year_date = datetime.datetime(today.year, 1, 1)
    syd = start_year_date.strftime('%Y-%m-%d')
    print(syd)
    
    # 今年开始时间戳
    print(int(start_year_date.timestamp()))
    
    # 今年结束时间
    end_year_date = datetime.datetime(today.year,12,31,23,59,59)
    eyd = end_year_date.strftime('%Y-%m-%d')
    print(eyd)
    
    # 今年结束时间戳
    print(int(end_year_date.timestamp()))
    
    
    # 去年开始时间
    last_year_date = datetime.datetime(today.year-1, 1, 1)
    lyd = last_year_date.strftime('%Y-%m-%d')
    print(lyd)
    
    # 去年开始时间戳
    print(int(last_year_date.timestamp()))
    
    # 去年结束时间
    last_year_end_date = datetime.datetime(today.year, 1, 1,23,59,59) - datetime.timedelta(days=1)
    lyed = last_year_end_date.strftime('%Y-%m-%d')
    print(lyed)
    
    # 去年结束时间戳
    print(int(last_year_end_date.timestamp()))

    打印结果:
    2020-01-01
    1577808000
    2020-12-31
    1609430399
    2019-01-01
    1546272000
    2019-12-31
    1577807999

  • 相关阅读:
    vue-cli 2.x 项目优化之:引入本地静态库文件
    关联本地文件夹到 GitLab 项目
    react 子组件访问父组件的方法
    vue 和 react 组件间通信方法对比
    mobx-state-tree 知识点
    vue 下实现 echarts 全国到省份的地图下钻
    TweenMax 动画库,知识点
    mobx 知识点
    highcharts 知识点
    dependencies、devDependencies、webpack打包 的区别与联系
  • 原文地址:https://www.cnblogs.com/fengyumeng/p/13529277.html
Copyright © 2011-2022 走看看