【问题标题】:Converting from a day of week to unix time in PHP在 PHP 中从星期几转换为 unix 时间
【发布时间】:2010-03-23 23:10:36
【问题描述】:

我正在尝试获取格式如下的日期字符串的 unix 时间:

'second sunday of march 2010'
'first sunday of november 2010'

我的印象是 strtotime 可以处理这样的字符串,但显然不能,因为它返回 false。当给定一周中的某一天时,我如何转换为 unix 时间,其中一个月(即第一、第二等)、一个月和一年。

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:

    strtotime 应该可以做到这一点。您可以尝试使用mktime() 生成三月第一天的时间戳并将其添加为第二个参数(在字符串部分仅保留“第一个星期日”):

    $timestamp = mktime (0,0,0,3,1,2010);  // 1st of march
    $first_sunday = strtotime("first sunday", $timestamp);
    

    不确定这将如何处理实际上是星期日的第一天(3 月 1 日)。请务必检查一下。

    另外,也许这更可靠,请查看this - 发帖人说他用以下符号(引用)得到了很好的结果:

    <?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 一样,无论您选择什么,请确保您测试良好,尤其是边缘情况(每月的第一天是星期日,上个月的最后一天是星期日......)

    【讨论】:

    • 您的第一个解决方案很聪明,但我什至没有尝试过,因为您的第二个解决方案效果很好。谢谢。
    【解决方案2】:

    您的代码在 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 2020-12-14
      • 2021-07-27
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多