学Python(6)—日期计算案例
来源:互联网 发布:淘宝卖家论坛首页 编辑:程序博客网 时间:2024/06/18 16:38
python 日期计算案例
一、计算两个日期内的所有月
def
get_month_interval(start_str, end_str):
start_year, start_month
=
list
(
map
(
int
, start_str.split(
'-'
)))
end_year, end_month
=
list
(
map
(
int
, end_str.split(
'-'
)))
result
=
[]
for
year
in
range
(start_year, end_year
+
1
):
year_str
=
str
(year)
if
year
=
=
end_year
and
year
=
=
start_year:
# 当前年份 =结束年份 and 当前年份 = 起始年份
for
month
in
range
(start_month, end_month):
date_str
=
year_str
+
'-'
+
str
(month)
result.append(date_str)
elif
year < end_year
and
year
=
=
start_year:
# 当前年份<结束年份 and 当前年份 = 起始年份
for
month
in
range
(start_month,
13
):
date_str
=
year_str
+
'-'
+
str
(month)
result.append(date_str)
elif
year < end_year
and
year !
=
start_year:
# 当前年份<结束年份 and 当前年份 != 起始年份
for
month
in
range
(
1
,
13
):
date_str
=
year_str
+
'-'
+
str
(month)
result.append(date_str)
else
:
# 当前年份 = 结束年份 and 当前年份 != 起始年份
for
month
in
range
(
1
, end_month
+
1
):
date_str
=
year_str
+
'-'
+
str
(month)
result.append(date_str)
return
result
测试结果如下:
>>> get_month_interval(
'2015-11'
,
'2016-2'
)
[
'2015-11'
,
'2015-12'
,
'2016-1'
,
'2016-2'
]
二、计算两个日期之间的差值
def
get_date_diff(start_str, end_str):
import
datetime
start
=
datetime.datetime.strptime(start_str,
'%Y-%m-%d %H:%M:%S.%f'
)
end
=
datetime.datetime.strptime(end_str,
'%Y-%m-%d %H:%M:%S.%f'
)
diff
=
end
-
start
# 相差天数
print
(
'相差天数:'
, diff.days)
# 相差秒数
print
(
'相差秒数:'
, diff.seconds)
# 相差微秒数
print
(
'相差微秒数:'
, diff.microseconds)
测试结果如下:
>>> get_date_diff(
'2016-1-25 23:59:59.100'
,
'2016-2-27 22:58:58.50'
)
相差天数:
32
相差秒数:
82739
相差微秒数:
400000
三、计算当前时间延后指定时间的日期
>>> compute_date(days
=
1
,weeks
=
2
)
2016
-
11
-
19
15
:
24
:
41.203940
2016
-
12
-
04
15
:
24
:
41.203940
测试结果如下:
#计算经过两周一天之后的日期
>>> compute_date(days
=
1
,weeks
=
2
)
2016
-
11
-
19
15
:
24
:
41.203940
2016
-
12
-
04
15
:
24
:
41.203940
四、时间日期格式化符号
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%f 毫秒(小数点后6位)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
五、相关模块
datetime模块
•datetime.date:表示日期的类。常用的属性有year, month, day;
•datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
•datetime.datetime:表示日期时间。
•datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
•datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
注:上面这些类型的对象都是不可变(immutable)的。
date类
date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:
class datetime.date(year, month, day):参数的意义就不多作解释了,只是有几点要注意一下:
•year的范围是[MINYEAR, MAXYEAR],即[1, 9999];
•month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~);
•day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;
date类定义了一些常用的类方法与类属性,方便我们操作:
•date.max、date.min:date对象所能表示的最大、最小日期;
•date.resolution:date对象表示日期的最小单位。这里是天。
•date.today():返回一个表示当前本地日期的date对象;
•date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
•datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar:一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)
date提供的实例方法和属性:
•date.year、date.month、date.day:年、月、日;
•date.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
•date.timetuple():返回日期对应的time.struct_time对象;
•date.toordinal():返回日期对应的Gregorian Calendar日期;
•date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
•data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
•date.isocalendar():返回格式如(year,month,day)的元组;
•date.isoformat():返回格式如'YYYY-MM-DD'的字符串;
•date.strftime(fmt):自定义格式化字符串。在下面详细讲解。
- 学Python(6)—日期计算案例
- js 获取日期及日期计算案例
- python 日期时间计算
- Python计算日期差
- python中的日期计算
- python time 计算日期
- Python 小案例 计算个人所得税
- 【Python】Python_learning5:使用python计算生日日期
- python的可学计算库 Numpy
- python 计算下一个星期三的日期
- python 计算两个带日期的时间差
- python 计算N天之后的日期
- python 计算两个带日期的时间差
- python datetime.timedelta的日期计算
- Python:计算两个日期之间的天数
- python计算两个日期的间隔天数
- 笨方法学Python 习题 3: 数字和数学计算
- 笨办法学python习题3 数字和数学计算
- daemon线程
- JDBC Java数据库连接 2 2017年12月20日 22:45:56
- 密码学原理_Crypto++实现一次性密码本(OTP)
- extract-text-webpack-plugin配置出错的解决办法
- 杂货边角(6):Windows的数据类型和编译器固定数据类型对照
- 学Python(6)—日期计算案例
- latex 页眉插入图片logo
- 项目经理面试中可能遇到的问题(持续更新)
- 本地代码上传到Github
- 数据结构--静态单链表
- Android7.0去电流程源码分析(二)
- 面试前需考虑的25个问题
- 配置静态元素的过期时间
- 深入理解 Java 反射:Method (成员方法)