如果日期为+1
,我想添加sunday
。下面的代码适用于其余日期。但是当我通过30 sept 2012
时,我在1 Sept 2012
中向我1 Oct 2012
而不是dateMsg
。代码有什么问题?请指导。我猜我在这个月的最后一个日期都会遇到同样的问题。如何在整个日期而不仅仅是当天加1?
var monthName=convertMnthNoToName(freeLookEndDt.getMonth()+1);
if (freeLookEndDt.getDay()==0) {
var date=new Date(freeLookEndDt.getFullYear(),freeLookEndDt.getMonth(),
freeLookEndDt.getDate()+1);
var newmonthName=convertMnthNoToName(date.getMonth()+1);
var dateMsg = date.getDate() + '-' + monthName + '-' + freeLookEndDt.getFullYear();
document.forms[0].flEndDt.value=dateMsg;
}
和convertMnthNoToName()
function convertMnthNoToName(val)
{
if(val==01 || val==1)
{
val1="Jan";
}
if(val==02 || val==2)
{
val1="Feb";
}
if(val==03 || val==3)
{
val1="Mar";
}
if(val==04 || val==4)
{
val1="Apr";
}
if(val==05 || val==5)
{
val1="May";
}
if(val==06 || val==6)
{
val1="Jun";
}
if(val==07 || val==7)
{
val1="Jul";
}
if(val==08 || val==8)
{
val1="Aug";
}
if(val==09 || val==9)
{
val1="Sep";
}
if(val==10)
{
val1="Oct";
}
if(val==11)
{
val1="Nov";
}
if(val==12)
{
val1="Dec";
}
return val1;
}
其中freeLookEndDt = Sun Sep 30 00:00:00 UTC+0530 2012
答案 0 :(得分:1)
这更有效率。此外,您需要在添加日期之后取月份
请注意您的示例中的日期将解决到我所在国家/地区的星期六!
var monthNames ="Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(",")
if (freeLookEndDt.getDay()==0) {
freeLookEndDt.setDate(freeLookEndDt.getDate()+1);
var dateMsg = freeLookEndDt.getDate() + '-' + monthNames[freeLookEndDt.getMonth()] + '-' + freeLookEndDt.getFullYear();
document.forms[0].flEndDt.value=dateMsg;
}
或者如果你需要保持freeLookEndDate:
if (freeLookEndDt.getDay()==0) {
var date = new Date(freeLookEndDt.getTime());
date.setDate(date.getDate()+1);
var dateMsg = date.getDate() + '-' + monthNames[date.getMonth()] + '-' + date.getFullYear();
document.forms[0].flEndDt.value=dateMsg;
}
答案 1 :(得分:0)
你定义newmonthName
但使用monthName
。因此它使用旧月份名称。 newmonthName
应该已更改
你应该能够做freeLookEndDt.setDate(freeLookEndDt.getDate()+1)
答案 2 :(得分:0)
var date=new Date(freeLookEndDt.getFullYear(), freeLookEndDt.getMonth(),
freeLookEndDt.getDate()+1);
使用
var date = new Date();
date.setFullYear(freeLookEndDt.getFullYear());
date.setMonth(freeLookEndDt.getMonth());
date.setDate(freeLookEndDt.getDate()+1);
这样,您将在最后一步设置日期,而日期将重新计算存储的月份和年份以更正值。请注意,如果你有12月31日那年也可以改变。
此外,函数convertMnthNoToName
可以修改为具有更紧凑的实现,并且还能够处理字符串输入值,例如“03”。
完整代码:
var monthName=convertMnthNoToName(freeLookEndDt.getMonth()+1);
if (freeLookEndDt.getDay()==0) {
var date = new Date();
date.setFullYear(freeLookEndDt.getFullYear());
date.setMonth(freeLookEndDt.getMonth());
date.setDate(freeLookEndDt.getDate()+1);
var newmonthName=convertMnthNoToName(date.getMonth()+1);
var dateMsg = date.getDate() + '-' + newmonthName + '-' + freeLookEndDt.getFullYear();
document.forms[0].flEndDt.value=dateMsg;
}
/**
* Converts month (1-based) to its string representation
* @param {Number|String} val Month index (from 1-January to 12-December)
* @return {String} String representation of month or empty string for invalid input parameter
*/
function convertMnthNoToName(val)
{
val = parseInt(val); // string "01" will be converted to 1
if(val>=1 && val<=12)
{
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
return monthNames[val-1];
}
return "";
}