| Code Perl |
sub offsetDate {local($x,$n) = @_;
local($k,$a,$m,$j);
if ($x!~/(\d\d)\/(\d\d)\/(\d\d\d\d)/) {return ''}
$j = ('1'.$1)+0-100; $m = ('1'.$2)+0-100; $a = ($3)+0;
$j += $n;
if ($n>=0) {
while($j>($k=&mois($a,$m,1))) {$a = (($m==12)?$a+1:$a); $m = ($m%12)+1; $j -= $k}
} else {
while($j<1) {$a = (($m==1)?$a-1:$a); $m = (($m+10)%12)+1; $j += &mois($a,$m,1)}
}
return (($j<10)?'0':'').$j.''.'/'.(($m<10)?'0':'').$m.''.'/'.$a.'';
}
sub offsetDate2 {local($x,$sens) = @_;
local($k,$a,$m,$j);
if ($x!~/(\d\d)\/(\d\d)\/(\d\d\d\d)/) {return ''}
$j = ('1'.$1)+0-100; $m = ('1'.$2)+0-100; $a = ($3)+0;
if ($sens>=0) {
if ($j<16) {return &offsetDate($x,16-$j)};
return &offsetDate($x,&mois($a,$m,1)+1-$j);
} else {
if ($j>=16) {return &offsetDate($x,1-$j)};
return &offsetDate($x,16-&mois((($m==1)?$a-1:$a),(($m+10)%12)+1,1)-$j);
}
}
sub mois {local($a,$m,$j) = @_;
local @T = (31,28,31,30,31,30,31,31,30,31,30,31);
if ($m==2) {return (($a%4)==0)?29:28} else {return $T[$m-1]}
return 0;
}
|
| Code JavaScript |
function offsetDate(x,n) {
var k,a,m,j;
if (!x.match(/(\d\d)\/(\d\d)\/(\d\d\d\d)/)) {return ''}
j = parseInt('1'+RegExp.$1)-100; m = parseInt('1'+RegExp.$2)-100; a = parseInt(RegExp.$3);
j += n;
if (n>=0) {
while(j>(k=mois(a,m,1))) {a = ((m==12)?a+1:a); m = (m%12)+1; j -= k}
} else {
while(j<1) {a = ((m==1)?a-1:a); m = ((m+10)%12)+1; j += mois(a,m,1)}
}
return ((j<10)?'0':'')+j.toString()+'/'+((m<10)?'0':'')+m.toString()+'/'+a.toString();
}
function offsetDate2(x,sens) {
var k,a,m,j;
if (!x.match(/(\d\d)\/(\d\d)\/(\d\d\d\d)/)) {return ''}
j = parseInt('1'+RegExp.$1)-100; m = parseInt('1'+RegExp.$2)-100; a = parseInt(RegExp.$3);
if (sens>=0) {
if (j<16) {return offsetDate(x,16-j)};
return offsetDate(x,mois(a,m,1)+1-j);
} else {
if (j>=16) {return offsetDate(x,1-j)};
return offsetDate(x,16-mois(((m==1)?a-1:a),((m+10)%12)+1,1)-j);
}
}
function mois(a,m,j) {
var T = [31,28,31,30,31,30,31,31,30,31,30,31];
if (m==2) {return ((a%4)==0)?29:28} else {return T[m-1]}
return 0;
}
|