在PHP中计算没有YEAR的过去日期的YEAR

时间:2018-03-26 15:24:57

标签: php date datetime

我从日志文件中提取日期,但不包括年份。 唯一已知的事实是日期是过去的。可能是1秒前,但不会超过365天。

我喜欢计算年份。

日志文件日期格式为

date('m-d H:i:s');

如果当前日期为2018年4月1日', 日志文件&1; 1月1日'将是2018年1月1日'。

但是,当日志文件日期为

'20 Dec'  I need '20 Dec 2017'
'2 Apr'   I need  '2 Apr 2017' (as 2 Apr 2018 would be in the future)
'1 Apr'   I need  '1 Apr 2018' (that's today)

2 个答案:

答案 0 :(得分:0)

我建议使用此代码段作为起点:

$today = date('m-d H:i:s');
$dates = array(
    '04-20 15:00:00',
    '02-03 15:00:00',
    '05-12 15:00:00',
    '01-14 15:00:00',
    '02-15 15:00:00',
);

echo $today.'<br>';

foreach($dates as &$date) {
    $exploded = explode(' ',$date);
    if($date > $today) {
        $date = $exploded[0].'-2017 '.$exploded[1];
        echo $date . '<br>';
    } else {
        $date = $exploded[0].'-2018 '.$exploded[1];
        echo $date . '<br>';
    }
}

它应输出如下内容:

03-26 11:49:33

04-20-2017 15:00:00

02-03-2018 15:00:00

05-12-2017 15:00:00

01-14-2018 15:00:00

02-15-2018 15:00:00

答案 1 :(得分:0)

你可以尝试这样的事情

function convertMonthStringToInt($strMonth) {
   $month = array(
       'Jan' => 0,
       'Feb' => 1,
       'Mar' => 2,
       'Apr' => 3,
       'May' => 4,
       'Jun' => 5,
       'Jul' => 6,
       'Aug' => 7,
       'Sep' => 8,
       'Oct' => 9,
       'Nov' => 10,
       'Dec' => 11,
   );

   return $month[$strMonth];
}

function findYear($monthLog) {
   $currentYear = date('Y');
   $currentMonth = date('M');

   if(convertMonthStringToInt($monthLog) > convertMonthStringToInt($currentMonth)) {
      return $currentYear - 1;
   }
   else {
      return $currentYear;
   }
}

然后你可以使用findYear函数找到正确的年份

findYear('Nov'); // 2017
findYear('Jan'); // 2018
findYear('Mar'); //2018
findYear('Aug'); // 2017 

等...