Python之基本的日期与时间转换 datetime、 dateutil模块
简单举例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模块的更多相关文章
- MySQL 日期、时间转换函数
MySQL 日期.时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式.它是 str_to ...
- java日期和时间转换字符
日期和时间转换字符 字符 描述 例子 c 完整的日期和时间 Mon May 04 09:51:52 CDT 2009 F ISO 8601 格式日期 2004-02-09 D U.S. 格式日期 (月 ...
- python获取当前的日期和时间
import datetime import time print ("格式参数:") print (" %a 星期几的简写") print (" % ...
- python: 基本的日期与时间转换
需要执行简单的时间转换,比如天到秒,小时到分钟等的转换. 为了执行不同时间单位的转换和计算,请使用datetime 模块.比如,为了表示一个时间段,可以创建一个timedelta 实例,就像下面这样: ...
- python笔记7:日期和时间
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. 时间 ...
- Python获取当前时间及时间转换(datetime)
datetime是Python处理日期和时间的标准库 获取当前时间 import datetime day = datetime.datetime.now() day2 = datetime.date ...
- 不一样的日期、时间转换(moment.js)
无意中遇到了一种很奇怪的日期格式,从接口中返回的日期是这样的,如 2018-02-06T11:59:22+08:00 .然而这却不是我们想要的,我们要的是这种,YYYY-MM-DD HH:mm:ss. ...
- 【python】常用的日期和时间操作
#-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...
- Hive日期、时间转换:YYYY-MM-DD与YYYYMMDD;hh.mm.ss与hhmmss的相互转换
思路 YYYY-MM-DD与YYYYMMDD:hh-mm-ss与hhmmss的相互转换有两种办法,第一种是利用UNIX时间戳函数,第二种是利用字符串拼接函数. YYYY-MM-DD与YYYYMMDD相 ...
随机推荐
- sq - 压缩一个排过序的单词列表 unsq - 解压一个排过序的单词列表
总览 (SYNOPSIS) sq < infile > outfile unsq < infile > outfile 描述 (DESCRIPTION) sq 压缩 一个 排过 ...
- elk相关启动脚本-shell编写
elasticsearch-restart: #!/bin/bash PID=`ps -ef|grep elasticsearch|grep -vE 'grep|controller|elastics ...
- weblogic下载
1.网址 https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 2.信息
- PoisonTap - 在锁屏电脑上窃取cookies,获得电脑路由,安装网络后门的工具
工具地址:https://samy.pl/poisontap/ 当PoisonTap(由Raspberry Pi Zero & Node.js开发)接入到一个锁屏或者用密码保护的电脑上时,它可 ...
- ivew 双向绑定时间控件
<FormItem label="开始时间" style="width: 100%" prop="startDate"> < ...
- 太可怕了!黑客是如何攻击劫持安卓用户的DNS?
最近发现的针对Android设备的广泛路由器的DNS劫持恶意软件现在已升级为针对iOS设备以及桌面用户的功能. 被称为RoamingMantis的恶意软件最初发现在上个月劫持了互联网路由器,以散布旨在 ...
- create-react-app按需引入antd-mobile
1.引入 react-app-rewired 并修改 package.json 里的启动配置: npm i react-app-rewired@2.0.2-next.0 // 需要安装低版本 否则np ...
- python 关于每个项目的解释器
在写程序的时候发现了一个问题,就是我原来import的第三方包,在新建的项目里仍然报错,还需要重新下载一次 发现:原来每建一个新项目,python会默认生成另一个新的解释器和相关虚拟环境,包括第三方包 ...
- Django学习——collectstatic错误
Error fetching command 'collectstatic': You're using the staticfiles app without having set the STAT ...
- Python实现手机号自动判断性别
本文性别判断主要依靠airtest中的自动化测试实现 通过自动对比支付宝页面男女图像,从而实现男女判断 代码如下: 男女判断函数: // An highlighted block def numbe( ...