среда, 23 февраля 2011 г.

JavaScript: разность дат

Ниже приведен скрипт, вычисляющий разность дат.
Входные параметры: год, месяц и день начала интервала дат, год, месяц и день конца интервала дат.

var MD = [ 31 , 28 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31 ] ;

var MV = [ 31 , 29 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31 ] ;

var WS = WScript.CreateObject( "WScript.Shell" ) ;

function gage ( yb , mb , db , yi , mi , di )
{
var y , m , d , s , mm , bd , bm , by ;

y = m = d = bd = bm = by = 0 ;
s = "" ;

y = yi - yb ;
if ( di < db ) {
mm = mi ;
if ( mm == 1 ) mm = 12 ;
else mm-- ;

if (( yi % 4 == 0 ) && ( ( yi % 100 != 0 ) || ( yi % 400 == 0 ) ))
d = MV [ mm - 1 ] - db + di ;
else d = MD [ mm - 1 ] - db + di ;
bd = 1 ;
} else d = di - db ;

if ( mi < mb ) {
m = 12 - mb + mi - bd ;
bm = 1 ;
} else {
if (( mi == mb ) && bd ) m = 11 ;
else m = mi - mb - bd ;
}

if ( bd == 1 && bm == 1 ) by = 1 ;
else if ( bd == 0 && bm == 1 ) by = 1 ;
else if ( bd == 1 && ( mi == mb ) ) by = 1 ;
y = yi - yb - by ;

if ( y < 0 ) y = 0 ;
if ( m < 0 ) m = 0 ;
if ( d < 0 ) d = 0 ;

s = "лет: " + y + " месяцев: " + m + " дней: " + d ;

return s ;
}
WS.Popup ( gage ( 2010 , 09 , 28 , 2011 , 01 , 12 ) ) ;


P.S. Создание объекта типа WScript.Shell возможно только для ОС Windows.

Комментариев нет:

Отправить комментарий