最近有效月份的时间戳

时间:2009-12-09 09:56:00

标签: php date time

快点.. 如何推导出最近的三月或六月的unixtime?

如果当前月份是2009年2月,则脚本应该给出2009年3月1日的unixtime。

如果当前月份是2009年4月,则脚本应该给出2009年6月1日的unixtime。

如果当前月份是2009年10月,则脚本应该给出2010年3月1日的unixtime。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

更新:抱歉,我的不好。 “下一个”适用于日子和“下个月”但不是“明年三月”的情况,所以它比原来的一个班轮更复杂。

strtotime()对于这样的事情非常棒:

$tests = array(
  strtotime('2 february'),
  strtotime('4 april'),
  strtotime('9 november'),
);

foreach ($tests as $test) {
  echo date('r', $test) . ' => ' . date('r', nextmj($test)) . "\n";
}

function nextmj($time = time()) {
  $march = strtotime('1 march', $time);
  $june = strtotime('1 june', $time);
  if ($march >= $time) {
    return $march;
  } else if ($june >= $time) {
    return $june;
  } else {
    return strtotime('+1 year', $march);
  }
}

输出:

Mon, 02 Feb 2009 00:00:00 +0000 => Sun, 01 Mar 2009 00:00:00 +0000
Sat, 04 Apr 2009 00:00:00 +0000 => Mon, 01 Jun 2009 00:00:00 +0000
Mon, 09 Nov 2009 00:00:00 +0000 => Mon, 01 Mar 2010 00:00:00 +0000

另见What date formats does the PHP function strtotime() support?