我正在尝试获取格式如下的日期字符串的 unix 时间:
'second sunday of march 2010'
'first sunday of november 2010'
我的印象是 strtotime 可以处理这样的字符串,但显然不能,因为它返回 false。当给定一周中的某一天时,我如何转换为 unix 时间,其中一个是一个月(即第一,第二等),一个月和一年。
这应该是可能的strtotime
。您可以尝试使用生成三月第一天的时间戳mktime()
并将其添加为第二个参数(在字符串部分仅保留“第一个星期日”):
$timestamp = mktime (0,0,0,3,1,2010); // 1st of march
$first_sunday = strtotime("first sunday", $timestamp);
不确定这将如何处理实际上是星期日的第一天(3 月 1 日)。确保你检查出来。
另外,也许这更可靠,请检查一下-张贴者说他使用以下符号(引用)得到了很好的结果:
<?php
strtotime('+0 week sun nov 2009'); // first sunday in nov 2009
strtotime('+1 week sun nov 2009'); // second sunday
strtotime('-1 week sun nov 2009'); // last sunday in oct 2009
?>
与 strtotime 一样,无论您选择什么,请确保您测试良好,尤其是边缘情况(每月的第一天是星期日,上个月的最后一天是星期日......)
您的代码适用于 PHP 5.3.0。您使用的是什么版本的 PHP?
<?php
date_default_timezone_set("Europe/Oslo");
$time_march = strtotime('second sunday of march 2010');
$time_november = strtotime('first sunday of november 2010');
echo date("Y-m-d", $time_march) . " (timestamp: $time_march)\n";
echo date("Y-m-d", $time_november) . " (timestamp: $time_november)\n";
?>
给出:
2010-03-14 (timestamp: 1268521200)
2010-11-07 (timestamp: 1289084400)