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相 ...
随机推荐
- 微信小程序(18)-- 自定义头部导航栏
最近做的项目涉及相应的页面显示相应的顶部标题,所以就需要自定义头部导航了. 首先新建一个顶部导航公用组件topnav,导航高度怎么计算? 1.wx.getSystemInfo 和 wx.getSyst ...
- H5手机端底部菜单覆盖中间部分内容的解决办法
一.第一种Js动态计算中间内容的高度. 二.第二种给底部上面写个<div style="底部的高度"></div> 三.第三种给中间部分写一个margin- ...
- BZOJ-3143/洛谷3232 游走(HNOI2013)概率DP
题意:给定n个点m条边.每条边的权值还没决定,权值大小为从1到m.从1出发每次等概率选一条出边向下走,直到走到n点停止,路径代价就是边权总和.由你来决定边权来使得上诉路径代价期望值最小. 解法:点这么 ...
- 洛谷P1446/BZOJ1004 Cards Burnside引理+01背包
题意:有n张牌,有R+G+B=n的3种颜色及其数量,要求用这三种颜色去染n张牌.n张牌有m中洗牌方式,问在不同洗牌方式下本质相同的染色方案数. 解法:这道题非常有意思,题解参考Hzwer学长的.我这里 ...
- linux time命令的输出中“real”“user”“sys”的真正含义
下面转载的文章详细地介绍了time出来显示的“real”“user”“sys”的真正含义. Linux中time命令,我们经常用来计算某个程序的运行耗时,用户态cpu耗时,系统态cpu耗时. 例如: ...
- AGC016题解
呼我竟然真的去刷了016QwQ[本来以为就是个flag的233] 感觉AGC题目写起来都不是很麻烦但是确实动脑子qvq[比较适合训练我这种没脑子选手] 先扔个传送门:点我 A.Shrinking 题意 ...
- Vue $ref 的用法
<div id="app"> <cpn $ref="item"></cpn> <cpn></cpn> ...
- NAGIOS(网络监视工具)
Nagios是一款开源的免费网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机,路由器等网络设备,打印机等.在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员 ...
- 26 October in 614
Practice tower 有 \(N\,(2\le N\le 600000)\) 块砖,要搭一个 \(N\) 层的塔,要求:如果砖 \(A\) 在砖 \(B\) 上面,那么 \(A\) 不能比 \ ...
- python练习题之计算字符串中所有字符得和
第二题:计算字符串中所有数字的和1.字符串中只有小写字母和数字2.数字可能连续,也可能不连续3.连续数字要当做一个数处s='1234adg3g11's1 = "" for i in ...