Реализовал на PHP простую функцию, которая сверяет две даты и определяет разницу в: года, месяцах и днях.
Не стал, разбирать часы, минуты и секунды (в моей задаче это не требовалось)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
<?php function getCreate($cdatetime){ // check len deta $len = strlen($cdatetime); // substr date if($len > 10) { $cdatetime = substr($cdatetime,0,10); } // check values [year, month, day] $cdatetime = str_replace(".","-",$cdatetime); ///// date in future $date_now = date('Y-m-d'); $date_get = $cdatetime; if($date_get > $date_now) { echo "Error! Date in future."; exit; } else { $date1 = new DateTime($cdatetime); $date2 = new DateTime('now'); $interval = $date1->diff($date2); // values $ydatetime = $interval->format('%y'); // year $mdatetime = $interval->format('%m'); // month $ddatetime = $interval->format('%d'); // day // check 0 #=======> YEAR =======> if($ydatetime == 0) { unset($ydatetime); $ydatetime = ''; $value_year = ''; $year_date = '';} else{ // check len year $ylen = strlen($ydatetime); if($ylen == 1) { // replace $vyear = array('1','2','3','4','5','6','7','8','9'); $nyear = array('год','года','года','года','лет','лет','лет','лет','лет'); $yydatetime = $ydatetime; $value_year = str_replace($vyear,$nyear,$yydatetime); } elseif($ylen > 1){ $g = strlen($ydatetime); $n = $g - 1; $fage = substr($ydatetime,0,$n); $yydatetime = substr($ydatetime,-1); $vyear = array('0','1','2','3','4','5','6','7','8','9'); if( $fage > 1 ) { $nyear = array('лет','год','года','года','года','лет','лет','лет','лет','лет');} else { $nyear = array('лет','лет','лет','лет','лет','лет','лет','лет','лет','лет'); } $value_year = str_replace($vyear,$nyear,$yydatetime); } $year_date = $ydatetime.' '.$value_year.' '; } #=======> MONTH =======> if($mdatetime == 0) { unset($mdatetime); $mdatetime = ''; $value_month = ''; $month_date = '';} else{ // check len month $mlen = strlen($mdatetime); if($mlen == 1) { // replace $vmonth = array('1','2','3','4','5','6','7','8','9'); $nmonth = array('месяц','месяца','месяца','месяца','месяцев','месяцев','месяцев','месяцев','месяцев'); $mmdatetime = $mdatetime; $value_month = str_replace($vmonth,$nmonth,$mmdatetime); } elseif($mlen > 1) { $f = strlen($mdatetime); $w = $f - 1; $fage = substr($mdatetime,0,$w); $mmdatetime = substr($mdatetime,-1); // replace $vmonth = array('0','1','2','3','4','5','6','7','8','9'); $nmonth = array('месяцев','месяцев','месяцев','месяцев','месяцев','месяцев','месяцев','месяцев','месяцев','месяцев'); $value_month = str_replace($vmonth,$nmonth,$mmdatetime); } $month_date = $mdatetime.' '.$value_month.' '; } #=======> DAY =======> if($ddatetime == 0) { unset($ddatetime); $day_date = ''; } else{ // check len year $dlen = strlen($ddatetime); if($dlen == 1) { // replace $vday = array('0','1','2','3','4','5','6','7','8','9'); $nday = array('дней','день','дня','дня','дня','дней','дней','дней','дней','дней'); $dddatetime = $ddatetime; $value_day = str_replace($vday,$nday,$dddatetime); } elseif($dlen > 1) { $q = strlen($ddatetime); $s = $q - 1; $fage = substr($ddatetime,0,$s); $dddatetime = substr($ddatetime,-1); // replace $vday = array('0','1','2','3','4','5','6','7','8','9'); if( $fage > 1 ) { $nday = array('дней','день','дня','дня','дня','дней','дней','дней','дней','дней'); } else { $nday = array('дней','дней','дней','дней','дней','дней','дней','дней','дней','дней'); } $value_day = str_replace($vday,$nday,$dddatetime); } $day_date = $ddatetime.' '.$value_day; } if((empty($ydatetime)) and (empty($mdatetime)) and (empty($ddatetime)) ) { $created = 'менее суток назад'; } else{ $created = $year_date.$month_date.$day_date; } return $created; } // check date future } // вызов функции echo getCreate('2015.02.01 - 12:47:28'); // ответ: 1 день (на момент даты 2015.02.02) |