javascript中对日期加减的一个算法
来源:互联网 发布:算法初步知识点 编辑:程序博客网 时间:2024/06/04 08:29
最近在csp项目中遇到javascript中对指定日期加减一个值后获取新日期的问题,在javascipt中并没有像c#中那样强大的DateTime类(有AddDays(int)方法),所以只好写了一个函数计算
function DayAddDiff(year, month, day, diff)...{
var numDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var isLeap = false;
var newyear = year;
var newmonth = month - 1;
var n = numDays[newmonth];
var newday = day;
var newdiff = diff;
var ln;
if (newmonth == 0)
ln = 31;
else if(newmonth == 11)
ln = 31;
else
ln = numDays[newmonth + 1];
if (diff != 0)...{
//判断是否润年
if (year % 4 == 0)...{
if (year % 100 != 0)
isLeap = true;
else...{
if (year % 400 == 0)
isLeap = true;
}
}
if (newmonth == 1 && isLeap)
++n;
if (newmonth == 0 && isLeap)
++ln;
//加值
var newday = day + newdiff;
if (newday > 0)...{
if (newday > n)...{
newday = newday - n;
if (newmonth == 11)
...{
newmonth = 0;
newyear += 1;
newdiff = newday - 1;
return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
}
else...{
newmonth += 1
newdiff = newday - 1;
return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
}
}
}
else if (newday == 0)...{
if (newmonth == 0)
...{
newmonth = 11
newyear += -1;
newday = 31;
}
else...{
newmonth += -1
newday = ln;
}
}
else...{
if (newmonth == 0)
...{
newmonth = 11
newyear += -1;
newdiff = newday;
newday = 31;
return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
}
else...{
newmonth += -1;
newdiff = newday;
newday = ln;
return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
}
}
}
//输出字符串
var daystring = "";
daystring += year;
newmonth += 1;
if (newmonth < 10)
daystring += "/0" + newmonth;
else
daystring += "/" + newmonth;
if (newday < 10)
daystring += "/0" + newday;
else
daystring += "/" + newday;
return daystring;
}
var numDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var isLeap = false;
var newyear = year;
var newmonth = month - 1;
var n = numDays[newmonth];
var newday = day;
var newdiff = diff;
var ln;
if (newmonth == 0)
ln = 31;
else if(newmonth == 11)
ln = 31;
else
ln = numDays[newmonth + 1];
if (diff != 0)...{
//判断是否润年
if (year % 4 == 0)...{
if (year % 100 != 0)
isLeap = true;
else...{
if (year % 400 == 0)
isLeap = true;
}
}
if (newmonth == 1 && isLeap)
++n;
if (newmonth == 0 && isLeap)
++ln;
//加值
var newday = day + newdiff;
if (newday > 0)...{
if (newday > n)...{
newday = newday - n;
if (newmonth == 11)
...{
newmonth = 0;
newyear += 1;
newdiff = newday - 1;
return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
}
else...{
newmonth += 1
newdiff = newday - 1;
return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
}
}
}
else if (newday == 0)...{
if (newmonth == 0)
...{
newmonth = 11
newyear += -1;
newday = 31;
}
else...{
newmonth += -1
newday = ln;
}
}
else...{
if (newmonth == 0)
...{
newmonth = 11
newyear += -1;
newdiff = newday;
newday = 31;
return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
}
else...{
newmonth += -1;
newdiff = newday;
newday = ln;
return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
}
}
}
//输出字符串
var daystring = "";
daystring += year;
newmonth += 1;
if (newmonth < 10)
daystring += "/0" + newmonth;
else
daystring += "/" + newmonth;
if (newday < 10)
daystring += "/0" + newday;
else
daystring += "/" + newday;
return daystring;
}
- javascript中对日期加减的一个算法
- javascript中对日期加减的一个算法
- Javascript对日期的月份加减做法
- java中对日期的加减操作
- java中对日期的加减操作
- php中对日期加减的类
- java中对日期的加减操作
- java中对日期的加减操作
- java中对日期的加减操作
- java中对日期的加减操作
- PHP中对日期加减的类,很不错
- ASP,javascript中对日期时间的比较
- Javascript对日期的操作,日期函数
- Javascript对日期的操作,日期函数
- JavaScript 对日期,时间的操作
- 用js对日期进行加减操作
- js对日期加减等操作汇总
- Java 中对日期的操作
- SQL SERVER AGENT SECURITY
- 撰写高效率的.NET程序
- 一个支持只读属性的键/值对字符串处理类
- 去掉vs.net 2003中的动态帮助
- 图像锐化【检测和完善过代码】
- javascript中对日期加减的一个算法
- VB操作Excel无法更新的问题研究(续)
- 如何最大限度提高.NET的性能
- JSP学习笔记
- 珍爱生命,拒绝养猪
- 如何在ie和firefox中捕获按键keycode的方法
- 送给亲爱的话
- Java常见问题
- 初识HTC