2011-11-11 14 views
6

Jak przekonwertować "2011-11-03T17:27:56Z" na czas w php.Konwertuj ciąg na czas w php

Chcę uzyskać różnicę czasu od bieżącego czasu.

tj. Jeśli różnica czasu od bieżącego czasu wynosi 10 minut, chcę 10 minut. Jeśli jego 1 dzień to chcę 1 dzień.

Odpowiedz

7

Ten mały fragment daje różnicę w sekundach od teraz do podanej daty.

$dateString = "2011-11-03T17:27:56Z"; 
$date = strtotime($dateString); 
$diff = time() - $date; 
echo $diff; 

Aby nadać mu określony format Prosisz o można użyć poniższej funkcji znalazłem here:

function time_diff($s) { 
    $m = 0; $hr = 0; $d = 0; $td = "now"; 
    if ($s > 59) { 
     $m = (int)($s/60); 
     $s = $s-($m*60); // sec left over 
     $td = "$m min"; 
    } 
    if ($m > 59) { 
     $hr = (int)($m/60); 
     $m = $m - ($hr*60); // min left over 
     $td = "$hr hr"; 
     if ($hr > 1) { 
      $td .= "s"; 
     } 
     if ($m > 0) { 
      $td .= ", $m min"; 
     } 
    } 
    if ($hr > 23) { 
     $d = (int) ($hr/24); 
     $hr = $hr-($d*24); // hr left over 
     $td = "$d day"; 
     if ($d > 1) { 
      $td .= "s"; 
     } 
     if ($d < 3) { 
      if ($hr > 0) { 
       $td .= ", $hr hr"; 
      } 
      if ($hr > 1) { 
       $td .= "s"; 
      } 
     } 
    } 
    return $td; 
} 

Łącząc zarówno to, co dostajesz:

$dateString = "2011-11-03T17:27:56Z"; 
$date = strtotime($dateString); 
$diff = time() - $date; 
echo time_diff($diff); 

Wyjścia:

8 dni

2

wierzę chcesz strtotime() funkcję:

$some_time = strtotime("2011-11-03T17:27:56Z");//outputs a UNIX TIMESTAMP 
$time_diff = (time() - $some_time); 
if ($time_diff > 86400) { 
    echo round($time_diff/86400) . " days"; 
} else if ($time_diff > 3600) { 
    echo round($time_diff/3600) . " hours"; 
} else { 
    echo round($time_diff/60) . " minutes"; 
} 

http://us.php.net/manual/en/function.strtotime.php

Funkcja spodziewa się otrzymać ciąg zawierający angielskiego format daty i postaram się przeanalizować ten format w Unixowy znacznik czasu:

3
$diffInSecs = time() - strtotime('2011-11-03T17:27:56Z'); 
3

przykład robocza: (codepad here)

<?php 

$time_str = "2011-11-03T17:27:56Z"; 

//echo date('d/m/y H:i:s', strtotime($time_str)); 
$diff = abs(strtotime("now") - strtotime($time_str)); 

$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 
$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60)); 
$minuts = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); 
$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60)); 
printf("%d years, %d months, %d days, %d hours, %d minuts\n, %d seconds\n", $years, $months, $days, $hours, $minuts, $seconds); 

(czas edycja odbyła tutaj: How to calculate the difference between two dates using PHP?)