A
Anonymous
Guest
Привет, приятели. Търсих из уроците, но напразно, затова се обръщам тук. Случайно някой да може да ми даде примерен скрипт за функцията "преди х време." (като във фейсбук публикациите). Благодаря предварително.
function maketime($datefrom,$dateto=-1)
{
// Defaults and assume if 0 is passed in that
// its an error rather than the epoch
if($datefrom<=0) { return "Преди мноого време"; }
if($dateto==-1) { $dateto = time(); }
// Calculate the difference in seconds betweeen
// the two timestamps
$difference = $dateto - $datefrom;
// If difference is less than 60 seconds,
// seconds is a good interval of choice
if($difference < 60)
{
$interval = "s";
}
// If difference is between 60 seconds and
// 60 minutes, minutes is a good interval
elseif($difference >= 60 && $difference<60*60)
{
$interval = "n";
}
// If difference is between 1 hour and 24 hours
// hours is a good interval
elseif($difference >= 60*60 && $difference<60*60*24)
{
$interval = "h";
}
// If difference is between 1 day and 7 days
// days is a good interval
elseif($difference >= 60*60*24 && $difference<60*60*24*7)
{
$interval = "d";
}
// If difference is between 1 week and 30 days
// weeks is a good interval
elseif($difference >= 60*60*24*7 && $difference <
60*60*24*30)
{
$interval = "ww";
}
// If difference is between 30 days and 365 days
// months is a good interval, again, the same thing
// applies, if the 29th February happens to exist
// between your 2 dates, the function will return
// the 'incorrect' value for a day
elseif($difference >= 60*60*24*30 && $difference <
60*60*24*365)
{
$interval = "m";
}
// If difference is greater than or equal to 365
// days, return year. This will be incorrect if
// for example, you call the function on the 28th April
// 2008 passing in 29th April 2007. It will return
// 1 year ago when in actual fact (yawn!) not quite
// a year has gone by
elseif($difference >= 60*60*24*365)
{
$interval = "y";
}
// Based on the interval, determine the
// number of units between the two dates
// From this point on, you would be hard
// pushed telling the difference between
// this function and DateDiff. If the $datediff
// returned is 1, be sure to return the singular
// of the unit, e.g. 'day' rather 'days'
switch($interval)
{
case "m":
$months_difference = floor($difference / 60 / 60 / 24 /
29);
while (mktime(date("H", $datefrom), date("i", $datefrom),
date("s", $datefrom), date("n", $datefrom)+($months_difference),
date("j", $dateto), date("Y", $datefrom)) < $dateto)
{
$months_difference++;
}
$datediff = $months_difference;
// We need this in here because it is possible
// to have an 'm' interval and a months
// difference of 12 because we are using 29 days
// in a month
if($datediff==12)
{
$datediff--;
}
$res = ($datediff==1) ? "преди $datediff месец" : "преди $datediff
месеца";
break;
case "y":
$datediff = floor($difference / 60 / 60 / 24 / 365);
$res = ($datediff==1) ? " преди $datediff год." : "преди $datediff год.";
break;
case "d":
$datediff = floor($difference / 60 / 60 / 24);
$res = ($datediff==1) ? "преди $datediff ден " : "преди $datediff
дни";
break;
case "ww":
$datediff = floor($difference / 60 / 60 / 24 / 7);
$res = ($datediff==1) ? "преди $datediff седмица" : "преди $datediff
седмици";
break;
case "h":
$datediff = floor($difference / 60 / 60);
$res = ($datediff==1) ? "преди $datediff час " : " преди $datediff часа";
break;
case "n":
$datediff = floor($difference / 60);
$res = ($datediff==1) ? "преди $datediff мин. " :
"преди $datediff мин.";
break;
case "s":
$datediff = $difference;
$res = ($datediff==1) ? "преди $datediff сек." :
"преди $datediff сек.";
break;
}
return $res;
}
<?php
$time = time() - 86400 / 6.5;
echo maketime($time);
?>
// Функция за изминало време от дадено събитие
function TimeAgo($datefrom,$dateto=-1)
{
// Началната дата е 01.01.1970
if($datefrom <= 0) { return "Преди много време"; }
if($dateto == -1) { $dateto = time(); }
// Разлика в секунди между датите
$difference = $dateto - $datefrom;
// Ако разликата е под минута, показваме секундите
if($difference < 60)
{
$interval = "s";
}
// Ако интервала е между 1 и 60 минути показваме минутите
elseif($difference >= 60 && $difference < 60*60)
{
$interval = "n";
}
// Ако интервала е между 1 и 24 часа, показваме часовете
elseif($difference >= 60*60 && $difference < 60*60*24)
{
$interval = "h";
}
// Ако е в рамките на седмицата, показваме дните
elseif($difference >= 60*60*24 && $difference < 60*60*24*7)
{
$interval = "d";
}
// Ако е между 1 и 30 дена, показваме седмиците
elseif($difference >= 60*60*24*7 && $difference < 60*60*24*30)
{
$interval = "ww";
}
// Ако интервала е между 30 дена и 1 година показваме месеците
elseif($difference >= 60*60*24*30 && $difference < 60*60*24*365)
{
$interval = "m";
}
// Ако интервала е над 365 дена показваме годините
elseif($difference >= 60*60*24*365)
{
$interval = "y";
}
/*
* На база на интервала определяме броя единици
* между датите.Също така определяме думичките
* за ед./мн. число (ако е 1 или са повече)
*/
switch($interval)
{
case "m":
$months_difference = floor($difference / 60 / 60 / 24 /
29);
$datediff = $months_difference;
// We need this in here because it is possible
// to have an 'm' interval and a months
// difference of 12 because we are using 29 days
// in a month
if($datediff==12)
{
$datediff--;
}
$res = ($datediff==1) ? "Преди 1 месец" : "Преди $datediff месеца";
break;
case "y":
$datediff = floor($difference / 60 / 60 / 24 / 365);
$res = ($datediff==1) ? "Преди 1 година" : "Преди $datediff години";
break;
case "d":
$datediff = floor($difference / 60 / 60 / 24);
$res = ($datediff==1) ? "Преди 1 ден" : "Преди $datediff дена";
break;
case "ww":
$datediff = floor($difference / 60 / 60 / 24 / 7);
$res = ($datediff==1) ? "Преди 1 седмица" : "Преди $datediff седмици";
break;
case "h":
$datediff = floor($difference / 60 / 60);
$res = ($datediff==1) ? "Преди 1 час" : "Преди $datediff часа";
break;
case "n":
$datediff = floor($difference / 60);
$res = ($datediff==1) ? "Преди 1 минута" : "Преди $datediff минути";
break;
case "s":
$datediff = $difference;
$res = ($datediff==1) ? "Преди 1 секунда" : "Преди $datediff секунди";
break;
}
return $res;
}
<?php $predi = TimeAgo($date,$dateto=-1) ; print $predi; ?>
$date = time();
function maketime($datefrom, $dateto = time()){
}