Nasıl 2 tarih arasında bir zaman damgası fark dönüştürebilirsiniz
$diff = abs(strtotime($date2) - strtotime($date1));
istenen çıktıya olarak ay ve gün miktar:
$res = 4.05 //-> 4 months and 5 days
Böyle bir şey muhtemelen çalışacaktır. Benim matematik biraz kapalı olabilir.
$diff = abs(strtotime($date2) - strtotime($date1));
define('DAY',60*60*24, true);
define('MONTH',DAY*30, true);
define('YEAR',DAY*365, true);
$years = floor($diff / (YEAR));
$months = floor(($diff - $years * YEAR) / (MONTH));
$days = floor(($diff - $years * YEAR - $months*MONTH ) / (DAY));
Ay uzunluğu değişir gibi böyle bir yaklaşım olamaz - Eğer ortalama aylık uzunluğuna dayalı bir varsayım yapmak istediğiniz sürece. Eğer gerçek tarih kullanmanız gerekir doğru farkı istiyorsanız o zaman php tarih diff kullanabilirsiniz - http://www.php.net/manual/en/datetime.diff.php
For PHP 5.3 you might want to use
http://de.php.net/manual/en/datetime.diff.php
For lower versions you might want to use something like: (Simple solution, not fastest or best)
$days = 0;
$months = 0;
$month = date("n", $time1);
while ($time1 < $time2)
{
++$days;
if (date("n", $time1) != $month)
{
$month = date("n", $time1);
$days = 0;
$months++;
}
$time1 = mktime(0, 0, 0, date("n", $time1), date("j", $time1) + 1, date("Y"));
}
/ / Yasal Uyarı: denenmemiş
Ben bu php mevcut olduğunu sanmıyorum. Yani tamsayı bölme (veya normal bölünme) ve modül operatörünü kullanmak zorunda olacak.
Örneğin (örnek yerine ms saat kullanır ama tekrarlanan aynı hiledir):
$totalhours = 27;
$days = round($totalhours / 24);
$hours = $totalhours % 24;
Bu verecektir $ gün = 1 ve $ saat = 3
Diğer cevaplarda belirtildiği gibi. Ayda günlük miktarı sabit değildir, çünkü ay bulmak daha zordur.
Üç ay (01.03.2010 01.01.2010 (gibi tam bir farktır) ay karşılaştırırken bunu bir insandan beklediğiniz farklılıkları ifade etmek mümkün olduğu gibi Sen, DateTime.diff bakmak isteyebilirsiniz .)
Böyle bir fonksiyon, bir gün tarih farkı hesaplayabilirsiniz
function diff_date_day($day , $month , $year , $day2 , $month2 , $year2){
$timestamp = mktime(0, 0, 0, $month, $day, $year, 0);
$timestamp2 = mktime(0, 0, 0, $month2, $month2, $year2);
$diff = floor(($timestamp - $timestamp2) / (3600 * 24));
return $diff;
}
Make bir varsayım ortalama bir ay 30 gün ve ay sayısını hesaplamak. Bazı (blog yorum yaş, vb görüntüleme) ihtiyaçları ve diğerleri için tamamen uyumsuz için yeterli olabilir.
Ben bu şimdi eski olduğunu biliyorum, ama zaman damgası biçiminde verilen bir dob gelen "3 yıl ve 6 ay" biçiminde zaman farkını hesaplamak için bir şey ararken ben karşıya geldi. Birinin yarayabilecek aşağıdaki yazdı.
// Determine age
$time_start = 'YOUR DOB';
$time_end = strtotime('today');
$years = 0;
$months = 0;
while ($time_start < $time_end){
$tmp_time = strtotime('+ 1 year', $time_start);
if ($tmp_time < $time_end){
$years++;
$time_start = $tmp_time;
} else {
$tmp_time = strtotime('+ 1 month', $time_start);
if ($tmp_time < $time_end){
$months++;
$time_start = $tmp_time;
} else {
$time_start = $time_end;
}
}
}
$age = $years.' years & '.$months.' months';