代码直接贴上来的,这博客里也不知道写什么了,总不能天天写安装各种软件吧,唉~
解释下这段代码的作用吧,工作中确实可以用到的,虽然很简单。
实际环境是TDI 使用SAP R/3 function 去HR那边同步数据时,需要取出每天disable_person的数据。那边需要传过去的参数是START_DATE,END_DATE。
以前使用的是 getFullYear(); getMonth(); getMonth() 拼接的出来的END_DATE, -1 就是START_DATE
后来发现月初的时候 比如20100901时 –1 就会变成20100900
无法给SAP 传过去准确的时间。所以编写如下代码,可以实现闰月,特殊时间日期等的时间联动。
PS:代码最初编写者为彭强。转载请注明出处哈。
var t = new Date();
var y = t.getFullYear();
var m = t.getMonth() + 1;
var d = t.getDate();
if (m < 10) m = "0" + m;
if (d < 10) d = "0" + d;
function IsPinYear(year)
{
if (0 == year%4 && (year%100 !=0 || year%400 == 0)) {
return true;
} else {
return false;
}
}
function getMaxDays(year, month) {
var days = "";
if (month == "01" || month == "03" || month == "05" || month =="07" || month == "08" || month == "10" || month == "12") {
days = "31";
}else if (month == "04" || month == "06" || month == "09" || month == "11") {
days = "30";
}
if(month == "02") {
if(IsPinYear(year) == true) {
days = "29";
} else {
days = "28";
}
}
return days;
}
function getYesterday (year, month, day) {
var yes_d = "";
var yes_m = "";
var yes_y = "";
if(day == "01") {
if (month == "01") {
yes_m = "12";
yes_y = year - 1;
yes_d = getMaxDays(yes_y, yes_m);
if(yes_d < 10) yes_d = "0" + yes_d;
} else {
yes_m = month - 1;
if(yes_m < 10) yes_m = "0" + yes_m;
yes_y = year;
yes_d = getMaxDays(yes_y, yes_m);
if(yes_d < 10) yes_d = "0" + yes_d;
}
return yes_y + yes_m + yes_d + "";
} else {
var yes_d = day - 1;
var yes_m = month;
var yes_y = year;
if(yes_d < 10) yes_d = "0" + yes_d;
return yes_y + yes_m + yes_d + "";
}
}
var currTime = y + m + d + "";
var yesterday = getYesterday(y, m, d);