【问题标题】:how do i get the 1st day of week from current date我如何从当前日期获得一周的第一天
【发布时间】:2011-02-09 06:47:35
【问题描述】:

我想获得一周的第一个日期?
即。

 if 2011-01-01 then 2011-01-01  
    if 2011-01-06 then 2011-01-01  
    if 2011-01-20 then 2011-01-14  
    if 2011-01-21 then 2011-01-21 

抱歉误导和混淆问题。

我只想获取一周中第一天的日期,即。 1 或 7 或 14 或 21 或 28

【问题讨论】:

  • 您认为星期一还是星期日是您一周的第一天?这将对答案产生影响。
  • 您还没有正确定义“一周的第一天”。 “1 或 7 或 14”没有多大意义。
  • 星期并不总是从 1、7、14、21、28 等开始。例如,2 月 1 日是星期二。

标签: php date logic


【解决方案1】:

到目前为止,最直接的方法是从日期减去星期几(0 = 'w' 的星期日,1 = 'N' 的星期一):

$date = strtotime('2011-02-09');
$sunday = strtotime('-' . date('w', $date) . ' days', $date);
$monday = strtotime('-' . (date('N', $date) - 1) . ' days', $date);

【讨论】:

    【解决方案2】:

    如果你认为星期一是一周的第一天

    echo date('Y-m-d',strtotime("last monday", strtotime('tomorrow',strtotime($date))));
    

    您可以将monday 替换为一周中的任何一天。

    【讨论】:

    • 如果今天是星期一就会失败
    • 我最好使用“明天”功能:echo date('Y-m-d',strtotime("last monday", strtotime('tomorrow', strtotime($date)))); --- 在这种情况下您不需要添加另一个检查。
    【解决方案3】:
    $wk_day=date('w');
    switch ($wk_day)
    {
      case 0:  $diff = -1;        break;
      case 1:  $diff = 0;         break;
      default :$diff = $wk_day-1; break;
    }
    echo date('Y-m-d', time()-(86400*$diff));
    

    【讨论】:

    • 如果您认为星期一是您的第一天,那么您应该将第一行更改为:$wk_day=date('N'); 并且案例应该从 1 开始,然后您应该更改相应的情况。
    【解决方案4】:
    $current_date =date('Y-m-d'); 
    
    $year = date('Y');
    $month = date('m');
    $day = date('d');
    
    $first_day = get_week_start($year, $month, $day);
    
    $weeks_first_day =date('Y-m-d',$first_day);
    
    
        function get_week_start($year, $month, $day)
        {
        $timestamp = mktime(0, 0, 0, $month, $day, $year);
        return $timestamp = mktime(0, 0, 0, $month, date('d', $timestamp)-date('w', $timestamp), $year);
        }
    

    您可以从 $weeks_first_day 获取第一天的周数,您还可以随时更改格式!

    这里星期日是开始日期

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 1970-01-01
      • 2019-06-26
      • 2011-09-26
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      相关资源
      最近更新 更多