25.02.2012, 06:12
PHP код:
/*
Возвращает UNIX TIMESTAMP в соответствии с указанной датой.
ПОДРОБНЕЕ
UNIX TIMESTAMP это кол-во секунд со дня 01.01.1970, 00:00:00 до
указанной в параметрах даты
ВЕРНЕТ
число integer (4 байта)
*/
stock date_to_timestamp
(
year = 1970, month = 1, day = 1,
hour = 0, minute = 0, second = 0
)
{
switch ( month )
{
case 2 : day += 31; case 3 : day += 59; case 4 : day += 90;
case 5 : day += 120; case 6 : day += 151; case 7 : day += 181;
case 8 : day += 212; case 9 : day += 243; case 10 : day += 273;
case 11 : day += 304; case 12 : day += 334;
}
return ( second + minute*60 + hour*3600 + (day - 1)*86400
+ (year - 1970)*31557600 + ( year % 4 == 0 ? 21600 : 0 ) );
}
PHP код:
/*
Возвращает по ссылке дату в соответствии с указанным UNIX TIMESTAMP.
ПОДРОБНЕЕ
UNIX TIMESTAMP это кол-во секунд со дня 01.01.1970, 00:00:00 до
указанной в параметрах даты. Если он правильно указан, то в
year будет помещен год, в month - месяц, в day - день,
в hour - час, в minute - минута, в second - секунда.
ВЕРНЕТ
ничего
*/
stock timestamp_to_date
(
unix_timestamp = 0,
& year = 1970, & month = 1, & day = 1,
& hour = 0, & minute = 0, & second = 0
)
{
year = unix_timestamp / 31557600;
unix_timestamp -= year * 31557600;
year += 1970;
if ( year % 4 == 0 ) unix_timestamp -= 21600;
day = unix_timestamp / 86400;
switch ( day )
{
// в second будет временно хранится число месяца
case 0..30 : { second = day; month = 1; }
case 31..58 : { second = day - 31; month = 2; }
case 59..89 : { second = day - 59; month = 3; }
case 90..119 : { second = day - 90; month = 4; }
case 120..150 : { second = day - 120; month = 5; }
case 151..180 : { second = day - 151; month = 6; }
case 181..211 : { second = day - 181; month = 7; }
case 212..242 : { second = day - 212; month = 8; }
case 243..272 : { second = day - 243; month = 9; }
case 273..303 : { second = day - 273; month = 10; }
case 304..333 : { second = day - 304; month = 11; }
case 334..366 : { second = day - 334; month = 12; }
}
unix_timestamp -= day * 86400;
hour = unix_timestamp / 3600;
unix_timestamp -= hour * 3600;
minute = unix_timestamp / 60;
unix_timestamp -= minute * 60;
day = second + 1;
second = unix_timestamp;
}