Как вычислить разницу между датами

Главные вкладки

Аватар пользователя vitvas vitvas 6 августа 2008 в 18:19

Здравствуйте, Друпалеры!!!

Подскажите, пожалуйста, как вычислить разницу между двумя датами и вывести ее в текстовом формате (года месяцы недели дни часы). У меня есть поле "Дата окончания" и "Текущая дата". Нужно узнать разницу. Если "Дата Окончания" равна или больше "Текущей Даты", вывод разницы в текстовом формате нужно подсветить, например, красным цветом.

Заранее благодарен!

Комментарии

Аватар пользователя JoNs0n JoNs0n 6 августа 2008 в 20:47

Сам бился в одно время с этой проблемой вот мое решение "До нового года осталось..."

<?
$days=floor((MkTime(0,0,0,1,1,date("Y")+1)-time())/86400);
$hours=(floor((MkTime(0,0,0,1,1,date("Y")+1)-time())/3600)-($days*24));
$min=((floor((MkTime(0,0,0,1,1,date("Y")+1)-time())/60)-($days*1440)))-($hours*60);
if ($days<30) {
if (($days>=10)&&($days<=20))
$d='дней';
else {
switch(substr($days, -1, 1)){
case 1: $d='день';
break;
case 2: case 3: case 4: $d='дня';
break;
case 5: case 6: case 7: case 8: case 9: case 0: $d='дней';
break;}
}
if ($days>=0){
if (($hours>=10)&&($hours<=20))
$h='часов';
else {
switch(substr($hours, -1, 1)) {
case 1: $h='час';
break;
case 2: case 3: case 4: $h='часа';
break;
case 5: case 6: case 7: case 8: case 9: case 0: $h='часов';
break;}}}
if ($hours>=0){
if (($min>=10)&&($min<=20))
$m='минут';
else {
switch(substr($min, -1, 1)) {
case 1: $m='минута';
break;
case 2: case 3: case 4: $m='минуты';
break;
case 5: case 6: case 7: case 8: case 9: case 0: $m='минут';
break;}}}
echo "До Нового года осталось:
$days $d, $hours $h и $min $m
";
} else
echo "C Новым годом!!!";
?>

А вот на JS, позже нашел в инете

document.write('До нового года осталось!!!')
function ojidanieNG(){
today = new Date()
BigDay = new Date("January 1, 2008")
timeLeft = (BigDay.getTime() - today.getTime())
e_daysLeft = timeLeft / 86400000
daysLeft = Math.floor(e_daysLeft)
e_hrsLeft = (e_daysLeft - daysLeft)*24
hrsLeft = Math.floor(e_hrsLeft);
e_minsLeft = (e_hrsLeft - hrsLeft)*60
minsLeft = Math.floor(e_minsLeft)
seksLeft = Math.floor((e_minsLeft - minsLeft)*60)
document.getElementById("left").innerHTML = '

До Нового года осталось:

'+daysLeft+' дней, '+hrsLeft+' часов, '+minsLeft+' минут, '+seksLeft+' секунд!'}
setInterval("ojidanieNG()", 50)