[英]Get all the months and year from provided ISO Date to current month and year
[英]Printing 3 year calendar in months staring from the current month
我在javascript中獲取當前日期,然后將其轉換為當前月份。 基於當前月份(現在為9),我想向后打印過去3年的月份日歷。 因此,如果我們有2013年9月,則必須打印以下內容:
08 09 10 11 12 2010
01 02 03 04 05 06 07 08 09 10 11 12 2011
01 02 03 04 05 06 07 08 09 10 11 12 2012
01 02 03 04 05 06 07 08 2013
我對如何打印第一行有一個大致的了解,但是我在努力如何打印日歷的其余部分。 這是我第一行(2013年)的代碼:
function printCalendarRows(){
var d = new Date();
var n = (d.getMonth()) + 1;
var twelve = 12;
for(var i = n; i <= 12; i++){
for(var j = 12; j >= n; j--){
console.log(i);
console.log(j);
}
}
}
有什么建議嗎? 謝謝
function calRows() {
var date,
now = new Date(),
str = "";
for (var i = -37;i++;) {
date = new Date(now.getFullYear(), now.getMonth() + i - 1, 1)
month = ("0" + (date.getMonth() + 1)).slice(-2);
str += month + " " + (+month % 12 == 0 ? date.getFullYear() + "\n" : "")
}
return str + date.getFullYear();
}
console.log (calRows()) /*
08 09 10 11 12 2010
01 02 03 04 05 06 07 08 09 10 11 12 2011
01 02 03 04 05 06 07 08 09 10 11 12 2012
01 02 03 04 05 06 07 08 2013 */
這是小提琴
或者,如果願意,也可以在循環中不分配新的Date對象的情況下進行相同操作。
function calRows() {
var date,
now = new Date(),
first = new Date(now.getFullYear(), now.getMonth() -37, 1),
monthYear = [first.getMonth(),first.getFullYear()]
str = "";
for (var i = -37;i++;) {
month = ("0" + (++monthYear[0])).slice(-2);
str += month + " " + (+month % 12 == 0 ? (monthYear[0]=0,monthYear[1]++) + "\n" : "")
}
return str + monthYear[1]
}
檢查這是否是您想要的
function printCalendarRows(){
var d = new Date();
var o = new Date();
o.setMonth( (d.getMonth()) - 36); //or o.setFullYear( (d.getFullYear()) - 3);
var currnt;
while (o < d)
{
currnt = o.getMonth();
console.log(currnt);
if (currnt == 11)
{
console.log(o.getFullYear());
}
o.setMonth(currnt+1);
}
if (d.getMonth() != 11)
{
console.log(d.getFullYear());
}
alert("Date:"+ d + "Month:" + d.getMonth());
}
我會使用momentjs :
function printCalendarRows(){
var d = moment().subtract('months', 37);
var y = d.format("YYYY");
var n = moment().format("MM/YYYY");
var log = "";
while(d.format("MM/YYYY") != n) {
if (d.format("YYYY") != y) {
console.log(log + y + "\r\n");
y = d.format("YYYY");
log = "";
}
log += d.format("MM") + " ";
d = d.add("months", 1);
}
console.log(log + d.format("YYYY"));
}
printCalendarRows();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.