简体   繁体   English

如何获取从过去日期到现在的月份和年份 JavaScript

[英]How to get the month and year from the past date untill now JavaScript

I'm trying to figure out how to get combinations of year and month from the past date up till now.我试图弄清楚如何从过去的日期到现在获得年份和月份的组合。

So lets say, the past date is given as所以可以说,过去的日期是

const date = "December 2019"

Then I need an array然后我需要一个数组

const arrayOfMonths = [ "April 2020", "March 2020", "February 2020", "January 2020", "December 2019"]

You can use JavaScript Date objects and a while loop.您可以使用 JavaScript日期对象和 while 循环。

Just subtract a month from the current month till you get to the date you want.只需从当前月份减去一个月,直到您到达您想要的日期。

Something like this should work.像这样的东西应该工作。

https://jsfiddle.net/wsf61jpk/5/ https://jsfiddle.net/wsf61jpk/5/

var date="December 2018";
var result=[];

//set both start and end date to first date of the month
const end_date = new Date(date.replace(" ", " ,1 "));
const start_date = new Date(new Date().getFullYear(), new Date().getMonth(), 1);


while(end_date<=start_date){

result.push(start_date.toLocaleString('default', { month: 'long' , year: 'numeric'}));
start_date.setMonth(start_date.getMonth() - 1);

}

console.log(result);

i did it using by leveraging the javascript date functions我通过利用 javascript 日期函数来做到这一点

var oldDate = "December 2019";
var old = new Date(Date.parse(oldDate));
var today = new Date();
var yearsCount= today.getFullYear() - old.getFullYear();
var monthsArr = [];
for(var i = 0; i<=yearsCount;i++){
for(var j = 0; j<12;j++){
//skipping the months before the month in old date and the after the month in the current day
if(i==0 && j<old.getMonth()) continue;
if(i==yearsCount && j>today.getMonth()) continue;
// creating a new date in the format : mm-dd-yyyy (with dd=01) 
var newDate = new Date((j+1)+"-01-"+(old.getFullYear()+i))
//using to localestring to transfrom the date created into format : month year
var newmonth = newDate.toLocaleString('default', { month: 'long',year:'numeric' });
//pushing to the array
monthsArr.push(newmonth);
}
}
console.log(monthsArr);

there is a room for improvement but it gets the job done有改进的余地,但它可以完成工作

This function is generating a list of the months and years as in example you provided.此 function 正在生成您提供的示例中的月份和年份列表。 Note that input is expecting string of format MONTH FULLYEAR and any other format of the strings most likely will produce wrong results.请注意,输入需要格式为MONTH FULLYEAR的字符串,而任何其他格式的字符串很可能会产生错误的结果。 Having said that I'd suggest to pass Date object or timestamp if it's possible话虽如此,如果可能的话,我建议通过Date object 或时间戳

 function generateMonthsAndYears(startingFromDateString) { const cur = new Date(`15 ${startingFromDateString}`) const untilDateString = new Date(new Date().getFullYear(), new Date().getMonth()+1, 15).toDateString(); const result = []; for(; untilDateString.== cur;toDateString(). cur.setMonth(cur.getMonth()+1)) result.push(cur,toLocaleString('en-us': { month, 'long': year; 'numeric' })) return result. } console.log(generateMonthsAndYears("December 2018"))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM