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相 ...
随机推荐
- xcode 5.0 连接svn error -(NSURLErrorDomain error -1012)
xcode 5.0连接 svn server, check out时出现如下error : The operation couldn’t be completed. (NSURLErrorDomain ...
- 五 shell 变量与字符串操作
特点:1 shell变量没有数据类型的区分 2 Shell 把任何存储在变量中的值,皆视为以字符组成的“字符串”. 3 设定的变量值只在当前shell环境中有作用 4 不能以数字开头 ...
- reids 持久化
RDB: RDB是整个内存压缩过的Snapshot,RDB 的数据结构,可以配置符合的快照触发条件,默认如下 900s 1次修改 300s 10次修改 60s 10000 次修改 自动备份为dump ...
- Go 查找
sort.SearchInts(a []int, b int) 从数组a中查找b,前提是a必须有序 sort.SearchFloats(a []float64, b float64) 从数组a中查找b ...
- bzoj4007 & loj2111 [JLOI2015]战争调度 复杂度分析+树上背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4007 https://loj.ac/problem/2111 题解 同 [NOI2006]网络 ...
- 用setInterval方法实现弹框闪烁
每次看到某电商平台的拼团提示会觉得很有趣也很方便,正好自己在学习小程序,那就想个法子实现一下这种效果咯~思虑了一下还是觉得用setIntercal方法比较简便(数据方面就先不考虑了,我这里只做一下表现 ...
- Java管道流学习
管道流 作用:用于线程之间的数据通信 管道流测试:一个线程写入,一个线程读取 import java.io.IOException; import java.io.PipedInputStream; ...
- 编写mapreduce的程序的套路
https://blog.csdn.net/qq_42881421/article/details/83543926 给出下面6个经典案例: http://www.cnblogs.com/xia520 ...
- MySQL查询执行路径
1.客户端发送一条查询给服务器2.服务器先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果.3.服务器端进行SQL解析.预处理,再由优化器生成对应的执行计划.4.MySQL根据优化器生成的执行 ...
- react-jsx和数组
JSX: 1.全称:JavaScriptXML, 2.react定义的一种类似于XML的JS扩展语法:XML+JS 3.作用:用来创建react虚拟DOM(元素)对象 var ele=<h1&g ...