【问题标题】:PHP week date conversionPHP 星期日期转换
【发布时间】:2016-05-25 12:51:18
【问题描述】:

我的日期格式如下"2000-5-1"。第一个数字代表 4 位数年份。第二个是一年中的周数,最后一个是周数。

无论我做什么,函数总是返回false,我的代码如下:

date_create_from_format("Y-W-N", "2000-5-1")

(docs)

请避免使用“+1 天”等魔法词的解决方案。

【问题讨论】:

    标签: php date


    【解决方案1】:

    PHP 文档的supported date and time formats 部分的compound formats 部分描述了从具有年/周/日的复合格式创建 DateTime 对象:

    $x = new DateTime("2000-W05-1");
    var_dump($x);
    

    请注意,周数需要前导零

    结果是 2000-01-31 的 DateTime 对象

    【讨论】:

      【解决方案2】:

      如果您查看 DateTime::createFromFormat(这是您使用的别名)和 date() 的文档,格式没有 100% 重叠,所以您遇到了问题。

      这是我发现您可以使用的替代方法:DateTime::setISODate

      $date = explode('-','2000-5-1');
      $newDate = new DateTime();
      $newDate->setISODate($date[0], $date[1], $date[2]);
      

      setISODate 将按照文档中的说明使用年、周和日来创建 DateTime 对象。

      【讨论】:

      • 马克的回答似乎也是正确的,正如您在这两种情况下看到的那样,您需要操作日期字符串以将其转换为可用于构造日期的格式,这取决于您的偏好。
      猜你喜欢
      • 1970-01-01
      • 2017-06-05
      • 2011-01-29
      • 2019-04-08
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 2022-01-27
      • 2015-08-02
      相关资源
      最近更新 更多