我想得到上个月的最后一天到5个月前,对应于ED1到ED5。
如果我在setOriginalDate()设置了某个月,我希望它自动超过这个月的最后一天。要得到这个月的最后一天,你必须为下个月设定0天。
但有些“艾德”不能正常工作。当我为setOriginalDate()设置月份"11“时,”ED2“(2个月前)推出"10",而不是"9”。有人能告诉我为什么会这样吗?
function setOriginalDate(){
var SD = new Date();
SD.setFullYear(2014);
SD.setMonth(11);
SD.setDate(1);
SD.setHours(0);
SD.setMinutes(0);
SD.setSeconds(0);
return SD;
}
function electiveEndDate(OriginalDate){
var ED = setOriginalDate();
ED.setMonth(ED.getMonth()+1);//開始日の翌月の0日目を指定(その月の最終日)
ED.setDate(0);
ED.setHours(23);
ED.setMinutes(59);
ED.setSeconds(59);
switch(OriginalDate){
case 'ED':
return Utilities.formatDate(ED, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'yyyy-MM-dd');
break;
case 'ED1':
var ED1 = ED;
ED1.setMonth(ED.getMonth()); //1ヶ月前 現在の0日目を指定(前月の最終日)
ED1.setDate(0);
return Utilities.formatDate(ED1,SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'yyyy-MM-dd');
break;
case 'ED2':
var ED2 = ED;
ED2.setMonth(ED.getMonth()-1); //2ヶ月前
ED2.setDate(0);
return Utilities.formatDate(ED2,SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'yyyy-MM-dd');
break;
case 'ED3':
var ED3 = ED;
ED3.setMonth(ED.getMonth()-2); //3ヶ月前
ED3.setDate(0);
return Utilities.formatDate(ED3,SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'yyyy-MM-dd');
case 'ED4':
var ED4 = ED;
ED4.setMonth(ED.getMonth()-3); //4ヶ月前
ED4.setDate(0);
return Utilities.formatDate(ED4,SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'yyyy-MM-dd');
case 'ED5':
var ED5 = ED;
ED5.setMonth(ED.getMonth()-4); //5ヶ月前
ED5.setDate(0);
return Utilities.formatDate(ED5,SpreadsheetApp.getActive().getSpreadsheetTimeZone(), 'yyyy-MM-dd');
}
}发布于 2015-01-09 14:08:54
我不能说为什么使用"setMonth()“和"setDate()”会给出这些结果,但是您可以很容易地通过在每种情况下实例化一个新的Date对象并向构造函数传递适当的值来实现这一点。
function electiveEndDate(OriginalDate){
var timezone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
var ED = setOriginalDate();
ED.setMonth(ED.getMonth()+1);//開始日の翌月の0日目を指定(その月の最終日)
ED.setDate(0);
ED.setHours(23);
ED.setMinutes(59);
ED.setSeconds(59);
switch(OriginalDate){
case 'ED':
return Utilities.formatDate(ED, timezone, 'yyyy-MM-dd');
break;
case 'ED1':
var ED1 = new Date(ED.getFullYear(),ED.getMonth(),0);
return Utilities.formatDate(ED1,timezone, 'yyyy-MM-dd');
break;
case 'ED2':
var ED2 = new Date(ED.getFullYear(),ED.getMonth()-1,0);
return Utilities.formatDate(ED2,timezone, 'yyyy-MM-dd');
break;
case 'ED3':
var ED3 = new Date(ED.getFullYear(),ED.getMonth()-2,0);
return Utilities.formatDate(ED3,timezone, 'yyyy-MM-dd');
case 'ED4':
var ED4 = new Date(ED.getFullYear(),ED.getMonth()-3,0);
return Utilities.formatDate(ED4,timezone, 'yyyy-MM-dd');
case 'ED5':
var ED5 = new Date(ED.getFullYear(),ED.getMonth()-4,0);
return Utilities.formatDate(ED5,timezone, 'yyyy-MM-dd');
}
}https://stackoverflow.com/questions/27854620
复制相似问题