简单举例datetime模块

from datetime import timedelta,datetime
a = timedelta(days=2, hours=6)
b = timedelta(hours=4.5)
c=a+b
print(c) # 2 days, 10:30:00
print(c.seconds) #
print(c.seconds/3600) # 10.5
print(c.total_seconds()) # 210600.0
表示指定的日期和时间
d=datetime(2018,2,4)
print(d) # 2018-02-04 00:00:00
print(d+timedelta(days=5)) # 2018-02-09 00:00:00
e=datetime(2018,3,4)
print(e-d) # 28 days, 0:00:00 # datetime 会自动处理闰年
print((e-d).days) #
需要执行更加复杂的日期操作,比如处理时区,模糊时间范围,节假日计算等等, 可以考虑使用 dateutil模块
f= datetime(2019, 1, 23)
# print(f+timedelta(months=1)) # 'months' is an invalid keyword argument for this function
from dateutil.relativedelta import relativedelta
print(f+relativedelta(months=+1)) # 2019-02-23 00:00:00 # dateutil.relativedelta() 函数有一点需要注意的就是,它会在处理月份(还有它们的天数差距)的时候填充间隙
aa=datetime(2019,2,1)
bb=datetime(2019,4,5)
print(bb-aa) # 63 days, 0:00:00
cc=relativedelta(bb,aa)
print(cc) # relativedelta(months=+2, days=+4)
print(cc.months) #
print(cc.days) #

题目:计算最后一个周日的日期

通用解答:

from datetime import datetime, timedelta

weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', 'Sunday'] def get_previous_byday(dayname, start_date=None):
"""
Topic: 最后的周日
Desc : """
if start_date is None:
start_date = datetime.today()
day_num = start_date.weekday() # 开始日期
day_num_target = weekdays.index(dayname) # 目标日期,星期一索引为0
print(day_num,day_num_target) # 4 6/0 6/4,6
days_ago = (7 + day_num - day_num_target) % 7
print(days_ago) # 5/1/5
if days_ago == 0:
days_ago = 7
target_date = start_date - timedelta(days=days_ago)
return target_date target_date=get_previous_byday('Sunday', datetime(2012, 12, 21)) # 星期日
target_date=get_previous_byday('Sunday') # 2019-03-03 16:34:01.143620
target_date=get_previous_byday('Sunday',datetime(2019, 3, 1)) # 2019-02-24 00:00:00 print(target_date)
 如果你要像这样执行大量的日期计算的话,你最好安装第三方包 python-dateutil 来代替
from dateutil.relativedelta import relativedelta
from dateutil.rrule import *
date=datetime.now()
# Next Friday
print(date+relativedelta(weekday=FR)) # 2019-03-08 17:29:57.376490
# Last Friday
print(date+relativedelta(weekday=FR(-1))) # 2019-03-01 17:30:44.357886

Python之基本的日期与时间转换 datetime、 dateutil模块的更多相关文章

  1. MySQL 日期、时间转换函数

    MySQL 日期.时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式.它是 str_to ...

  2. java日期和时间转换字符

    日期和时间转换字符 字符 描述 例子 c 完整的日期和时间 Mon May 04 09:51:52 CDT 2009 F ISO 8601 格式日期 2004-02-09 D U.S. 格式日期 (月 ...

  3. python获取当前的日期和时间

    import datetime import time print ("格式参数:") print (" %a 星期几的简写") print (" % ...

  4. python: 基本的日期与时间转换

    需要执行简单的时间转换,比如天到秒,小时到分钟等的转换. 为了执行不同时间单位的转换和计算,请使用datetime 模块.比如,为了表示一个时间段,可以创建一个timedelta 实例,就像下面这样: ...

  5. python笔记7:日期和时间

    Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. 时间 ...

  6. Python获取当前时间及时间转换(datetime)

    datetime是Python处理日期和时间的标准库 获取当前时间 import datetime day = datetime.datetime.now() day2 = datetime.date ...

  7. 不一样的日期、时间转换(moment.js)

    无意中遇到了一种很奇怪的日期格式,从接口中返回的日期是这样的,如 2018-02-06T11:59:22+08:00 .然而这却不是我们想要的,我们要的是这种,YYYY-MM-DD HH:mm:ss. ...

  8. 【python】常用的日期和时间操作

    #-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...

  9. Hive日期、时间转换:YYYY-MM-DD与YYYYMMDD;hh.mm.ss与hhmmss的相互转换

    思路 YYYY-MM-DD与YYYYMMDD:hh-mm-ss与hhmmss的相互转换有两种办法,第一种是利用UNIX时间戳函数,第二种是利用字符串拼接函数. YYYY-MM-DD与YYYYMMDD相 ...

随机推荐

  1. sq - 压缩一个排过序的单词列表 unsq - 解压一个排过序的单词列表

    总览 (SYNOPSIS) sq < infile > outfile unsq < infile > outfile 描述 (DESCRIPTION) sq 压缩 一个 排过 ...

  2. elk相关启动脚本-shell编写

    elasticsearch-restart: #!/bin/bash PID=`ps -ef|grep elasticsearch|grep -vE 'grep|controller|elastics ...

  3. weblogic下载

    1.网址 https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 2.信息

  4. PoisonTap - 在锁屏电脑上窃取cookies,获得电脑路由,安装网络后门的工具

    工具地址:https://samy.pl/poisontap/ 当PoisonTap(由Raspberry Pi Zero & Node.js开发)接入到一个锁屏或者用密码保护的电脑上时,它可 ...

  5. ivew 双向绑定时间控件

    <FormItem label="开始时间" style="width: 100%" prop="startDate"> < ...

  6. 太可怕了!黑客是如何攻击劫持安卓用户的DNS?

    最近发现的针对Android设备的广泛路由器的DNS劫持恶意软件现在已升级为针对iOS设备以及桌面用户的功能. 被称为RoamingMantis的恶意软件最初发现在上个月劫持了互联网路由器,以散布旨在 ...

  7. create-react-app按需引入antd-mobile

    1.引入 react-app-rewired 并修改 package.json 里的启动配置: npm i react-app-rewired@2.0.2-next.0 // 需要安装低版本 否则np ...

  8. python 关于每个项目的解释器

    在写程序的时候发现了一个问题,就是我原来import的第三方包,在新建的项目里仍然报错,还需要重新下载一次 发现:原来每建一个新项目,python会默认生成另一个新的解释器和相关虚拟环境,包括第三方包 ...

  9. Django学习——collectstatic错误

    Error fetching command 'collectstatic': You're using the staticfiles app without having set the STAT ...

  10. Python实现手机号自动判断性别

    本文性别判断主要依靠airtest中的自动化测试实现 通过自动对比支付宝页面男女图像,从而实现男女判断 代码如下: 男女判断函数: // An highlighted block def numbe( ...