【问题标题】:I have the week number of year and the week day, how can I get the date in PHP [duplicate]我有年份和工作日的周数,如何在 PHP 中获取日期 [重复]
【发布时间】:2014-02-17 13:52:08
【问题描述】:

我有一年中的星期数和星期几,我需要得到确切的日期。

这是我迄今为止尝试过的。我在堆栈溢出时发现了这段代码,但它不准确:

function required_date($week_num, $day) {
  $week_of_year = sprintf('%02d', date('W', strtotime(date('Y-m-01'))) + $week_num);
  $day_of_week  = date('N', strtotime($day));
  $timestamp    = strtotime(date('Y') . '-W' . $week_of_year . '-' . $day_of_week);

  return $timestamp;
}


$timestamp = required_date(8, 'wednesday');
echo date('Y-m-d', $timestamp);

输出: 2014-03-26

预期输出: 根据日历,第 8 周和第 8 天星期三的日期为 2014-02-19。

【问题讨论】:

  • @putvande 请再次阅读问题,这是一个完全不同的问题

标签: php


【解决方案1】:

好吧,我自己想通了,代码如下:

function getWeekDates($week, $year)
{

    $time = strtotime("1 January $year", time());
    $day = date('w', $time);
    $time += ((7*$week)+1-$day)*24*3600;
    // date on monday for the week 
    $return["Monday"] = date('Y-n-j', $time);
    $time += 1*24*3600;
    // date on tuesday for the week 
    $return["Tuesday"] = date('Y-n-j', $time);
    $time += 1*24*3600;
    // date on wednesday for the week 
    $return["Wednesday"] = date('Y-n-j', $time);
    $time += 1*24*3600;
    // date on thursday for the week 
    $return["Thursday"] = date('Y-n-j', $time);
    $time += 1*24*3600;
    // date on friday for the week 
    $return["Friday"] = date('Y-n-j', $time);
    $time += 1*24*3600;
    // date on Saturday for the week 
    $return["Saturday"] = date('Y-n-j', $time);
    $time += 1*24*3600;
    // date on Sunday for the week 
    $return["Sunday"] = date('Y-n-j', $time);

    // Returning Array containing all the dates for the days of that specific week of the year.
    return $return;
}
// Lets assume I need dates for week number 7 of the year 2014.
print_r (getWeekDates(7, 2014));

【讨论】:

    【解决方案2】:

    您也可以使用 strtotime 功能。我曾经这样做如下::

    <?php
    
       function required_date($week_num, $day) {
        // get the present week number: exp: 8 
    $presentWeek = date("W", strtotime("now"));  
    
        // get the present day number : exp: 2
    $presentDay = date("w", strtotime("now")); 
    
        // convert the given day string into number
    $givenDay = date("w", strtotime("{$day}"));
    
        // subtract two value of week number
    $week = $week_num - $presentWeek;
    
        // subtract two value of day number
    $day = $givenDay - $presentDay;
    
        // get the value
    $timestamp = strtotime(" $week week $day day");
    return $timestamp;
     }
    
    
     $timestamp = required_date(14, 'wednesday');
     echo date('Y-m-d', $timestamp);
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      相关资源
      最近更新 更多