获取 Javascript 中两 (2) 个日期之间*每年*的月数 [例如:2019 年 8 月 - 2022 年 8 月]

     2023-03-30     164

关键词:

【中文标题】获取 Javascript 中两 (2) 个日期之间*每年*的月数 [例如:2019 年 8 月 - 2022 年 8 月]【英文标题】:Get the Number of Months *Per Year* between Two (2) Dates in Javascript [Ex: Aug 2019 - Aug 2022] 【发布时间】:2019-08-05 04:13:31 【问题描述】:

这可能与 Difference in Months between two dates in JavaScript 重复,但如果输入有多年,我需要计算 PER YEAR 的月数。

例如:

开始日期:2019-05-08

结束日期:2022-05-08

所以这将是 3 年,但总共有 4 个产出。我需要得到每年的月数。

startDate = "2019-08-05" // YYY-MM-DD
payOffDate = "2022-08-05"

function monthDiff(date1, date2)
    months = (date2.getFullYear() - date1.getFullYear()) * 12;
    months -= date1.getMonth() + 1;
    months += date2.getMonth();
    return months <= 0 ? 0 : months;


monthDiff(
    new Date(startDate),
    new Date(payOffDate)
); // 35 Months

在这种情况下,它会通过给定的两个输入(startDate、payOffDate)输出 35 个月,但我希望每年单独输出它们,只有这两个日期范围(不是手动输入 2019 年 8 月 - 2019 年 12 月,2022 年 1 月 - 2022 年 8 月等)

2019 [8 月 - 12 月] = 4 个月

2020 [1 月 - 12 月] = 12 个月

2021 [1 月 - 12 月] = 12 个月

2022 [1 月 - 8 月] = 7 个月

【问题讨论】:

请同时添加您的代码。展示您到目前为止所尝试的内容。 您在旅游问题中发布的链接中的答案解决了您的问题... 请查看更新后的帖子@RinkeshGolwala,谢谢 :) 为什么 8 月到 12 月是 4 个月,而 1 月到 12 月是 12 个月? Jan-Aug 只有 7 岁?这没有意义。 new Date(startDate) 中的字符串“2019-05-08”将被视为 UTC,因此 get 方法应该是 getUTC 方法。除了异常的 Jan-Dec 是 12 而不是 11 之外,它们似乎可以简单地是 getUTCMonth(date2) - getUTCMonth(date1) 【参考方案1】:

注意:调整您的月份数字模糊度。代码本身描述了一切。

const monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];

d1 = new Date("2019-08-05") // YYY-MM-DD
d2 = new Date("2022-08-05")

//Start and End Years
var start_y = d1.getFullYear();
var end_y = d2.getFullYear();

//Start and End months
var start_m = d1.getMonth();
var end_m = d2.getMonth();

var m1,m2;

//Loop all years
for( var i = start_y; i<= end_y; i++)
    m2 = (i == end_y) ?  end_m : 11;
    m1 = (i == start_y) ? start_m : 0;

    let t1 = new Date(i,m1,1), t2 = new Date(i,m2,1);

    var diff = monthDiff( t1, t2);

    console.log(`$i[$monthNames[m1] - $monthNames[m2]] = $diff`);



function monthDiff(date1, date2)
    return date2.getMonth()+1 - date1.getMonth();

【讨论】:

JQuery计算2个日期文本框中的日差

...改日期控件之一时两个日期之间的天数。如何使用jquery或javascript实现这一点?【问题讨论】:也许这对你有帮助***.com/questions/542938/… 查看详情

计算 Javascript 中 2 个 SQLite 日期时间之间的差异

】计算Javascript中2个SQLite日期时间之间的差异【英文标题】:Calculatethedifferencebetween2SQLitedatetimesinJavascript【发布时间】:2012-10-0711:44:00【问题描述】:我有一个startDate和一个endDate存储在SQLite数据库中,需要使用javascript计算两个... 查看详情

javascript按日期排序之灵活排序

   上代码:  1vardataContent=[2{3ID:"1",4hobbit:"去音乐",5sport:"在篮球",6movies:"功夫",7sender:"elson",8received:"2017-08-1813:23:21",9sex:"man",10age:"21"11},12{13ID:"22",14hobbit:"我音乐",15sport:"怕篮球",16movies:" 查看详情

javascript之“创意时钟”项目

...提高浏览器兼容性  三、知识点汇总:jQuery、原生javascript、css3、h5四、重难点解释1.各个指针的旋转角度的获取首先要明确如下概念:时钟 查看详情

javascript获取和设置日期

关于JavaScript中日期对象使用方法:一般有两种设置时间的方式:  一种是直接指定,如:date.setHours(13);    //指定date的时间为下午1点。  第二种是先获取时间进行计算,然后再进行设置,如: date.setHours(da... 查看详情

如何检索表的值以获取sql中两列的最大值

】如何检索表的值以获取sql中两列的最大值【英文标题】:Howtoretrievethevaluesofthetableforthemaxvalueoftwocolumnsinsql【发布时间】:2019-06-1821:15:42【问题描述】:我试图通过从两个不同的日期列中获取最大值来查询一个表,并输出两个日... 查看详情

在新日期vue.js中获取2个不同日期之间的所有日期[重复]

】在新日期vue.js中获取2个不同日期之间的所有日期[重复]【英文标题】:getalldatebetween2differentdateinnewDatevue.js[duplicate]【发布时间】:2020-07-2202:57:44【问题描述】:如何获取date1和date2之间的每个日期vardate1=newDate("06/30/2019");vardate2=n... 查看详情

在 2 个不同的列 sql 中获取 2 个不同日期的数据

】在2个不同的列sql中获取2个不同日期的数据【英文标题】:Getdataof2differentdatesin2differentcolumnssql【发布时间】:2021-04-2113:38:05【问题描述】:我有一个sql表,其中包含Name、VisitingDate、StayTime列我想要一个查询,它可以给我数据,... 查看详情

使用 2 个表和 3 个日期字段连接以降序获取多个日期的问题

】使用2个表和3个日期字段连接以降序获取多个日期的问题【英文标题】:Issueingettingmultipledatesindescendingorderwith2tableand3datefieldjoin【发布时间】:2016-01-0706:27:49【问题描述】:我想列出包含2个表和3个不同日期字段的记录,我在下... 查看详情

以格式(dddd MMMM Do,YYYY)获取jquery中2个日期之间的日期?

】以格式(ddddMMMMDo,YYYY)获取jquery中2个日期之间的日期?【英文标题】:getDatebetween2datesinjquerywithformat(ddddMMMMDo,YYYY)?【发布时间】:2015-10-1815:19:06【问题描述】:目前我正在使用jQueryDateRangePicker现在我有2个日期:开始日期="2015... 查看详情

javascript中获取日期方法

1<!DOCTYPEhtml>2<html>3<headlang="en">4<metacharset="UTF-8">5<title>js练习js是脚本语言直接运行在浏览器上的。</title>6<scripttype="text/javascript">7varnowdate=newDate();8docume 查看详情

从 2 个 REF 列中获取两个日期之间的差异

】从2个REF列中获取两个日期之间的差异【英文标题】:Gettingdifferencebetweentwodatesfrom2REF\'dcolumns【发布时间】:2017-10-0607:59:36【问题描述】:我是SQL新手,我正在尝试获取两个REF列值之间的两个值之间的日期。我目前的表格设置如... 查看详情

如何使用 angular 2 或 javascript 从客户端计算机获取日期和时间格式?

】如何使用angular2或javascript从客户端计算机获取日期和时间格式?【英文标题】:HowtogettheDate&TimeformatFromClientMachineusingangular2orjavascript?【发布时间】:2018-01-0417:24:04【问题描述】:transform(value:any):anyvarcustomdate=newDatePipe(navigator... 查看详情

javascript格式化日期,转换时间日期格式

JavaScript格式化日期,转换时间日期格式 //对Date的扩展,将Date转化为指定格式的String//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q)可以用1-2个占位符,//年(y)可以用1-4个占位符,毫秒(S)只能用1个占位符(是1-3位的数字)//例子://(... 查看详情

加入2个mysql表并获取第一个和最后一个日期

】加入2个mysql表并获取第一个和最后一个日期【英文标题】:join2mysqltablesandgetthefirstandlastdate【发布时间】:2015-05-1620:39:45【问题描述】:我有2个mysql表,一个包含用户详细信息,第二个包含用户看到的所有页面(1:N)TABLE"users"idint... 查看详情

oracle获取当天日期往前推2个工作日的日期

...再判断,直到计数满足你要前推的要求。参考技术Aoracle获取当天日期往前推2个工作日的日期根据你说的意思,应该是非工作日是不稳定的,那最笨也最简单就是从开始的那天-1,判断是不是工作日,不是计数,继续-2,再判断,... 查看详情

javascript高级程序设计之引用类型(下)

此篇内容紧接《JavaScript高级程序设计之引用类型(上)》,下边继续开始:Date类型Date是一个日期类,用它可以来获取日期和时间以及指定日期的毫秒数。Date类提供了丰富的API,可以通过MDN上的文档来了解:点击这里跳到MDN,... 查看详情

如何使用 TIMESTAMPDIFF 获取 PostgreSQL 中 2 个日期之间的差异? [复制]

】如何使用TIMESTAMPDIFF获取PostgreSQL中2个日期之间的差异?[复制]【英文标题】:Howtogetdifferencebetween2datesinPostgreSQLwithTIMESTAMPDIFF?[duplicate]【发布时间】:2018-10-2117:32:50【问题描述】:我想把它当作:SELECT*FROM"Employee"WHERETIMESTAMPDIFF(\'Y... 查看详情