python datetime -- 时间、日期模块

加载库

import datetime
from datetime import timedelta

一、datetime 基础

now         = datetime.datetime.now()                              # 返回当前时间 -- datetime格式
now_time    = now.time()                                           # datetime 转 time
now_date    = now.date()                                           # datetime 转 date
year        = now.year                                             # 年
quarter     = (now.month-1)//3 + 1                                 # 季度
month       = now.month                                            # 月
day         = now.day                                              # 日
hour        = now.hour                                             # 小时
minute      = now.minute                                           # 分钟
second      = now.second                                           # 秒
microsecond = now.microsecond                                      # 毫秒
week        = now.weekday()                                        # 返回日期是星期几,[0, 6],0表示星期一
isoweek     = now.isoweekday()                                     # 返回日期是星期几,[1, 7], 1表示星期一
isocalendar = now.isocalendar()                                    # 返回一个元组,格式为:(年份, 本年第几周, 周几)
timestr     = now.isoformat()                                      # 返回‘YYYY-MM-DD'格式的日期字符串

str_        = now.strftime("%Y-%m-%d %H:%M:%S")                    # 时间格式 转 字符串
now         = datetime.datetime.strptime(str_,"%Y-%m-%d %H:%M:%S") # 字符串 转 时间格式

print(" 当前时间(datetime格式):",now)
print("       datetime 转 time:",now_time)
print("       datetime 转 date:",now_date)
print("                     年:",year)
print("                     季:",quarter)
print("                     月:",month)
print("                     日:",day)
print("                     时:",hour)
print("                     分:",minute)
print("                     秒:",second)
print("                   毫秒:",microsecond)
print("        周(0表示周一):",week)
print("        周(1表示周一):",isoweek)
print("     年份, 第几周, 周几:",isocalendar)
print("             日期字符串:",timestr)

在这里插入图片描述

二、常用日期计算 (timedelta)

################################################ timedelta函数基本形式 ###########################################
now + timedelta(weeks = 3, days = 3, hours = 3, seconds = 30) # 3周3天3小时30秒后

####################################################### 日 #######################################################
last_day = now + timedelta(days=-1) # 昨天
next_day = now + timedelta(days=1)  # 明天

####################################################### 周 #######################################################
this_week_start = now + timedelta(days=-now.weekday())     # 本周一
last_week_start = now + timedelta(days=-now.weekday()-7)   # 上周一
next_week_start = now + timedelta(days=-now.weekday()+7)   # 下周一

this_week_end   = now + timedelta(days=6-now.weekday())    # 本周日
last_week_end   = now + timedelta(days=-now.weekday()-1)   # 上周日
next_week_end   = now + timedelta(days=now.weekday()+6)    # 下周日

####################################################### 月 #######################################################
this_month_start = datetime.datetime(now.year, now.month, 1)                                    # 本月一号
last_month_start = datetime.datetime((this_month_start+timedelta(days=-1)).year, \
                                     (this_month_start+timedelta(days=-1)).month, 1)            # 上月一号
next_month_start = datetime.datetime(now.year, now.month+1, 1)                                  # 下月一号

this_month_end   = datetime.datetime(now.year, now.month + 1, 1) - timedelta(days=1)            # 本月最后一天
last_month_end   = datetime.datetime(now.year, now.month, 1) - timedelta(days=1)                # 上月最后一天
next_month_end   = datetime.datetime(now.year, now.month + 2, 1) - timedelta(days=1)            # 下月最后一天

####################################################### 季 #######################################################
month = (now.month - 1) - (now.month - 1) % 3 + 1 
this_quarter_start = datetime.datetime(now.year, month, 1)                                      # 本季度第一天
this_quarter_end   = datetime.datetime(now.year, month + 3, 1) - timedelta(days=1)              # 本季度最后一天

last_quarter_end   = this_quarter_start - timedelta(days=1)                                     # 上季最后一天
last_quarter_start = datetime.datetime(last_quarter_end.year, last_quarter_end.month - 2, 1)    # 上季第一天

next_quarter_start = datetime.datetime(now.year, month + 3, 1)                                  # 下季度第一天
next_quarter_end   = datetime.datetime(now.year, month + 6, 1) - timedelta(days=1)              # 下季度最后一天

####################################################### 年 #######################################################
this_year_start = datetime.datetime(now.year, 1, 1)                                             # 本年一号
last_year_start = datetime.datetime((this_year_start+timedelta(days=-1)).year,1, 1)             # 上年一号
next_year_start = datetime.datetime(now.year + 1, 1, 1)                                         # 下年一号

this_year_end   = datetime.datetime(now.year + 1, 1, 1) - timedelta(days=1)                     # 本年最后一天
last_year_end   = datetime.datetime(now.year, 1, 1) - timedelta(days=1)                         # 上年最后一天
next_year_end   = datetime.datetime(now.year + 2, 1, 1) - timedelta(days=1)                     # 下年最后一天

三、计算两个日期的时间间隔

d1 = datetime.datetime.now()
d2 = now + timedelta(weeks = 8, days = 3, hours = 3, seconds = 30) # 8周3天3小时30秒后

d_seconds = (d2 - d1).seconds                              # 秒
d_minutes = (d2 - d1).seconds / 60                         # 分
d_hours   = (d2 - d1).seconds / 3600                       # 时
d_days    = (d2 - d1).days                                 # 天
d_weeks   = (d2 - d1).days / 7                             # 周
d_year    = d2.year - d1.year                              # 年
d_month   = d_year*12 + d2.month - d1.month                # 月
d_quarter = d_year*4 + (d2.month-1)//3 - (d1.month-1)//3   # 季

print("开始日期:",d1)
print("结束日期:",d2)
print("相差年数:",d_year)
print("相差季度:",d_quarter)
print("相差月数:",d_month)
print("相差周数:",d_weeks)
print("相差天数:",d_days)
print("相差小时:",d_hours)
print("相差分钟:",d_minutes)
print("相差秒数:",d_seconds)

在这里插入图片描述

  • 参考:https://blog.csdn.net/gty931008/article/details/80254806
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值