【问题标题】:How to get previous year's date relative to week of year如何获取相对于一年中一周的上一年日期
【发布时间】:2012-10-31 12:08:46
【问题描述】:

如何使用 php 获得相同 ISO-8601 周数但在前一年的同一天?

我熟悉从时间戳中提取这种软信息。是否有一种内置方式可以让我从星期几、一年中的一周和一年到时间戳?

【问题讨论】:

  • 你的意思是,如果今天是2012-11-12 10:00:00 Monday Week 45你想得到2011-11-07 10:00:00 Monday week 45

标签: php datetime


【解决方案1】:

我认为您正在寻找 mktime。看看这里http://php.net/manual/en/function.mktime.php

【讨论】:

  • 不幸的是,mktime 没有星期几或星期几的参数。否则它正是我需要的。
【解决方案2】:

您可以像这样使用datestrtotime 的组合:

// get the timestamp
$ts = strtotime('today');

// get year, week number and day of week
list($year, $week, $dow) = explode('-', date('Y-W-N', $ts));

// use the "YYYY-WXX-ZZ" format    
$format = ($year - 1) . "-W$week-$dow";
echo date('Y-m-d', strtotime($format)), PHP_EOL;

【讨论】:

    【解决方案3】:

    您可以使用strtotime

    $now = time(); // Mon, 12 Nov 2012
    $targetYear = date('Y', $now) - 1; // 2011
    $targetWeek = date('\\WW-N', $now); // W46-1
    $lastYear = strtotime($targetYear . $targetWeek); // Mon, 14 Nov 2011
    

    【讨论】:

      【解决方案4】:

      试试这个:

      $date = "2012-11-13";
      echo getLastYearWeek($date);
      function getLastYearWeek($date)
      {
          $last_year = date("Y-m-d W N", strtotime("-52 Weeks ".$date));
      
          return $last_year;
      }
      

      或者只是,

      $last_year = date("Y-m-d W N", strtotime("-52 Weeks ".$date));
      

      使用this 作为参考。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多