Преобразовать x часов x минут назад обратно в метку времени Unix - PullRequest
2 голосов
/ 16 сентября 2011

Я ищу функцию для преобразования дат, представленных в «X часах назад» и «X минутах назад», обратно в метку времени в php, у кого-нибудь есть решение?

Ответы [ 3 ]

10 голосов
/ 16 сентября 2011

strtotime уже делает это:

$timestamp = strtotime("8 hours ago");

См. Спецификации формата относительного времени для получения дополнительной информации.

2 голосов
/ 16 сентября 2011

Я помог кому-то в stackoverflow написать функцию, которая делает обратное, вот код, я уверен, что если вы разобьете и отмените его, у вас будет ответ:

<?
$unix_time = 6734;
echo howLongAgo($unix_time);

function howLongAgo($time_difference){

// Swtich logic based on the time difference passed to this function, sets the english string and what number the difference needs to be divided by
    switch($time_difference){
         case ($time_difference < 60):
              $string = " second";
              break;
         case ($time_difference >= 60 && $time_difference < 3600):
              $string = " minute";
              $divider = 60;
              break;
         case ($time_difference >= 3600 && $time_difference < 86400):
              $string = " hour";
              $divider = 3600;
              break;
         case ($time_difference >= 86400 && $time_difference < 2629743):
              $string = " day";
              $divider = 86400;
              break;
         case ($time_difference >= 2629743 && $time_difference < 31556926):
              $string = " month";
              $divider = 2629743;
              break;
         case ($time_difference >= 31556926):
              $string = " year";
              $divider = 31556926;
              break;
    }

// If a divider value is set during the switch, use it to get the actual difference
if($divider){$diff = round($time_difference / $divider);}else{$diff = round($time_difference);}
// If the difference does not equal 1, pluralize the final result EG: hours, minutes, seconds
if($diff != 1){$pluralize="s";}
// Concatenate all variables together and return them
$final =  $diff . $string . $pluralize . " ago";
return $final;

}
?>
1 голос
/ 16 сентября 2011
$hourago= "-1 hour";
$minago = "-2 minute";

$timestamp = strtotime($hourago.' '.$minago);
echo $timestamp;

или

$hourago= "-1";
$minago = "-2";

$timestamp = strtotime($hourago.' hour '.$minago.' minute');
echo $timestamp;
...