【问题标题】:Year, number of week and day of week to date in phpphp 中迄今为止的年份、周数和星期几
【发布时间】:2014-03-07 19:15:55
【问题描述】:

我从我的数据库中提取了三条信息,即年份、周数 (1-52) 和星期几(周一、周二、周三)。我需要将其转换为日期。

我将如何在 php 中执行此操作?

【问题讨论】:

标签: php date


【解决方案1】:

这会将您的 $day 值转换为所需的日期格式。 试试这个

$yr="2011";
$week="01";
$day="Monday";
$day=date("D",strtotime($day));
echo date("Y-m-d", strtotime($yr."W".$week."D ".$day));;

Demo

【讨论】:

  • 我试过这个: 结果是一样的 :x 错了
  • 我在您的参考后也检查过。它是错误的。如果找到解决方案将更新。
【解决方案2】:

试试这个:

$yr="2014";
$week="01";
$day = "Mon";
echo date("Y-m-d", strtotime($yr."W".$week."D ".$day));

PHP 小提琴:http://phpfiddle.org/main/code/nzg-ws6

【讨论】:

  • 我试过这个:$yr="2014"; $week="01"; $day ='周一'; echo date("Y-m-d", strtotime($yr."W".$week."D". $day));结果是: 2014-01-03 这是错误的。因为,2014-01-3 今天是星期五!
【解决方案3】:

做了一点挖掘,看起来一天需要采用数字格式才能使 strtotime 转换正常工作。使用诸如 'Monday' 这样的字符串是行不通的。

$yr = "2014";
$week = "01";
$day = "1"; //Monday
echo date("Y-m-d", strtotime($yr . "W" . $week . $day)); // "2014W011"

请注意,我没有包含当天的“D”前缀,因为这看起来跟在 ISO8601 之后。

可以通过以下几种方式将您的日子转换为数字: 您可以从周一到周日创建一个数组并使用数组键,或者更简单一些,您可以执行以下操作:

$day date("N", strtotime("Monday")); // will echo 1

所以完整的代码可能如下所示:

$yr = "2014";
$week = "01";
$day = date("N", strtotime("Monday")); //
echo date("Y-m-d", strtotime($yr . "W" . $week . $day)); // "2014W011"

这里有一个演示来检查:http://3v4l.org/EllgQ

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 2017-05-25
    相关资源
    最近更新 更多