计算两个日期相差 几年几个月几日
@创建于:20211117
文章目录
- 1、背景
- 2、代码示例
- 2.1 代码
- 2.1 输出结果
- 3、结果讨论
1、背景
经常遇到两个日期之间相差多个年,多少月,多少日。
方式1:使用datetime
datetime只能计算日期间隔了多少天,换成年,需要除以常数365.25;换成月则需要除以30.42。这样计算不太准确。
方式2:使用np.timedelta64()函数
方式3:使用dateutil的relativedelta
dateutil则可以计算日期间隔了几年几月几日,是一种比较准确的方法。
2、代码示例
2.1 代码
"""文件说明:日期时间,做差,算日期相差几年几月几日"""
import numpy as np
import pandas as pd
from datetime import datetime
from dateutil.relativedelta import relativedelta# 显示所有列
pd.set_option('display.max_columns', None)def year_month_day():# today = datetime.today()today = datetime(2021, 4, 3)someday = datetime(2021, 2, 1)print("today is {}, someday is {}".format(today, someday))delta = relativedelta(dt1=today, dt2=someday)years = delta.yearsmonths = delta.monthsdays = delta.daysprint('Time delta is {}'.format(delta))print('years={}, months={}, days={}'.format(years, months, days))def df_year_month_day():t1 = ['2017-01-01', '2017-01-01', '2017-02-03']t2 = ['2018-12-31', '2019-01-01', '2021-01-31']df = pd.DataFrame(np.array([t1, t2]).T, columns=['a', 'b'])print("原始数据:\n", df)df = df.astype('datetime64')df['c'] = df.apply(lambda x: relativedelta(x['b'], x['a']), axis=1)df['cy'] = df['c'].apply(lambda x: x.years)df['cm'] = df['c'].apply(lambda x: x.months)df['cd'] = df['c'].apply(lambda x: x.days)df['np_y'] = pd.to_datetime(df['b']) - pd.to_datetime(df['a'])df['np_y'] = df['np_y'].map(lambda x: x / np.timedelta64(1, 'Y'))print("计算两列日期差别:\n", df)if __name__=="__main__":year_month_day()print('\n')df_year_month_day()
2.1 输出结果
today is 2021-04-03 00:00:00, someday is 2021-02-01 00:00:00
Time delta is relativedelta(months=+2, days=+2)
years=0, months=2, days=2原始数据:a b
0 2017-01-01 2018-12-31
1 2017-01-01 2019-01-01
2 2017-02-03 2021-01-31
计算两列日期差别:a b c cy \
0 2017-01-01 2018-12-31 relativedelta(years=+1, months=+11, days=+30) 1
1 2017-01-01 2019-01-01 relativedelta(years=+2) 2
2 2017-02-03 2021-01-31 relativedelta(years=+3, months=+11, days=+28) 3 cm cd np_y
0 11 30 1.995934
1 0 0 1.998672
2 11 28 3.991868
3、结果讨论
在结果中可以看到,dateutil的relativedelta 比 np.timedelta64()更合理。
计算两个日期相差 几年几个月几日相关推荐
- 计算两个日期相差几年几个月
public static class dateTimeDiff { /// <summary> /// 计算日期间隔 /// </summary> ...
- 计算两个日期相差的小时差
计算出:两个日期之间的相差天数,乘小时数 <%@ page language="java" import="java.util.*" pageEncodi ...
- 计算两个日期相差的天数
JavaBean类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calen ...
- java计算两个日期相差月数
1.计算两个日期相差月数,不满一月按一月算 import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- java 日期只计算年月日大小_Java 计算两个日期相差多少年月日
JDK7及以前的版本,计算两个日期相差的年月日比较麻烦. JDK8新出的日期类,提供了比较简单的实现方法. /*** 计算2个日期之间相差的 相差多少年月日 * 比如:2011-02-02 到 201 ...
- java 计算日期相差天数_Java 计算两个日期相差的天数
当我们需要计算两个日期相差的天数怎么办呢,今天我们就来用 Java 比较两个日期相差的天数,最简单的方法,直接上代码: 第一种,Date类型计算public static int differentD ...
- python判断天数_Python计算两个日期相差天数的方法示例
本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...
- mysql计算两个月份之间的差值_MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
最新文章
- jsPlumb(3)-基本概念
- 以 27K 成功入职字节跳动,这份《 软件测试面试笔记》让我受益终身...
- 直播 | Python Web开发者的破局之道
- svn教程----示例二:测试人员拥有读权限
- 贝壳集团IPO背后,风投协议之外还要面临何时盈利的问题
- JVM调优:打印所有-XX非标参数命令
- 多文件同时读写为什么没有单文件读写快?
- FFmpeg转OpenCV Mat显示
- HDU - 1542 Atlantis(线段树+扫描线)
- adb devices 里面有很多 emulator-XXXX的解决方法
- Ubuntu apt update(apt-get update)报错、失败
- Failed to execute goal org.apache.maven.plugins:ma
- ENVI5.1LC08大气校正前期步骤
- 使用Hibernate中save方法时由于设置的id的增长方式为assigned报错处理和
- 3399 android root,RK3288/3399 Android Root方法
- 用PS修改图片上的数字
- linux安装beyondcompare
- 全面解读VTL(虚拟磁带库)
- 【读书笔记】之《月亮与六便士》
- c语言移动光标到指定坐标,C语言实现控制台中光标随意移动