【问题标题】:Weird dates when navigating in a calendar在日历中导航时出现奇怪的日期
【发布时间】:2015-03-05 08:12:24
【问题描述】:

我使用此代码在每周一开始的日历上来回导航 1 周:

$date = $sysback->input->get("date", false);
$date = ($date) ? $date : date("Y-m-d");

$time = strtotime($date);
$year = date("Y", $time);
$week = date("W", $time);

$date_from = date("Y-m-d", strtotime($year."W".$week));
$date_to = date("Y-m-d", strtotime($year."W".$week." +6days"));

$date_prev = date("Y-m-d", strtotime($year."W".$week." -7days"));
$date_next = date("Y-m-d", strtotime($year."W".$week." +7days"));

但问题是,如果我从这周回到 2014 年,我会得到奇怪的日期:

  • 今天日期:2015-01-07
  • 退一步:2014-12-29
  • 后退两步:2013-12-23

【问题讨论】:

  • 我从不相信“周数”。这大概就是为什么。如果可以的话,就去“当前日期-7天”。甚至是“星期一 -7 天”
  • strtotime 真的吗?我以为我们在 90 年代留下了这个:P 使用 DateTime 类...

标签: php date calendar


【解决方案1】:

问题是您将日历年和 ISO 8601 周数混合在一起。 ISO 周通常跨越日历年边界,因此使用日历年会得到错误的答案,

您需要在您的date() 调用中使用'o' 而不是'Y' 来确定@​​987654324@ 这将为您提供与周数相匹配的适当年份数

$year = date("o", $time);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    相关资源
    最近更新 更多