복붙노트

PHP로 1 주일을 보냅니 까?

PHP

PHP로 1 주일을 보냅니 까?

MM-dd-yyyy 형식의 날짜가 주어지면 누군가가 내가 그주의 첫날을 갖도록 도울 수 있습니까?

해결법

  1. ==============================

    1.여기 제가 사용하고있는 것이 있습니다 ...

    여기 제가 사용하고있는 것이 있습니다 ...

    $day = date('w');
    $week_start = date('m-d-Y', strtotime('-'.$day.' days'));
    $week_end = date('m-d-Y', strtotime('+'.(6-$day).' days'));
    

    $ day에는 요일을 나타내는 0에서 6까지의 숫자가 포함됩니다 (일요일 = 0, 월요일 = 1 등). $ week_start에는 현재주의 일요일 날짜가 mm-dd-yyyy로 포함됩니다. $ week_end에는 이번주의 토요일 날짜가 mm-dd-yyyy로 포함됩니다.

  2. ==============================

    2.

    strtotime('this week', time());
    

    시간을 교체하십시오 (). 다음 일요일 / 마지막 월요일 방법은 현재 날짜가 일요일 / 월요일 일 때 작동하지 않습니다.

  3. ==============================

    3.strtotime 함수를 사용하는 것은 매우 간단합니다 :

    strtotime 함수를 사용하는 것은 매우 간단합니다 :

    echo date("Y-m-d", strtotime('monday this week')), "\n";   
    
    echo date("Y-m-d", strtotime('sunday this week')), "\n";
    

    PHP 버전에서 약간 다릅니다 :

    2015-03-16
    2015-03-22
    
    2015-03-23
    2015-03-22
    
    2015-03-30
    2015-03-29
    

    이번 주 같은 상대적인 설명은 그들 자신의 맥락을 가지고있다. 다음은 월요일 또는 일요일 인 이번 주 및 월요일의 출력을 보여줍니다.

    $date = '2015-03-16'; // monday
    echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";   
    echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";
    
    $date = '2015-03-22'; // sunday
    echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";   
    echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";
    

    PHP 버전에서 조금 다릅니다.

    2015-03-16
    2015-03-22
    2015-03-23
    2015-03-29
    
    2015-03-16
    2015-03-22
    2015-03-23
    2015-03-22
    
    2015-03-23
    2015-03-22
    2015-03-23
    2015-03-29
    
    2015-03-23
    2015-03-29
    2015-03-30
    2015-03-29
    
  4. ==============================

    4.간단하게 유지하십시오.

    간단하게 유지하십시오.

    <?php    
    $dateTime = new \DateTime('2012-05-14');
    $monday = clone $dateTime->modify(('Sunday' == $dateTime->format('l')) ? 'Monday last week' : 'Monday this week');
    $sunday = clone $dateTime->modify('Sunday this week');    
    ?>
    

    출처 : PHP 매뉴얼

  5. ==============================

    5.

    $givenday = date("w", mktime(0, 0, 0, MM, dd, yyyy));
    

    이렇게하면 주어진 날짜 자체의 요일 (0 = 일요일 및 6 = 토요일)이 제공됩니다. 거기에서 원하는 날짜로 거꾸로 계산할 수 있습니다.

  6. ==============================

    6.그것이 가치있는 일이라면, 일관성있는 기준 틀을 결정할 때 strtotime의 우스꽝스러운 행동의 붕괴가 있습니다 :

    그것이 가치있는 일이라면, 일관성있는 기준 틀을 결정할 때 strtotime의 우스꽝스러운 행동의 붕괴가 있습니다 :

    http://gamereplays.org/reference/strtotime.php

    기본적으로이 문자열 만 신뢰할 수있는 동일한 날짜를주게됩니다. 요일에 관계없이 현재 전화를 걸 때 다음과 같습니다.

    strtotime("next monday");
    strtotime("this sunday");
    strtotime("last sunday"); 
    
  7. ==============================

    7.이 질문에는 좋은 DateTime 응답이 필요합니다.

    이 질문에는 좋은 DateTime 응답이 필요합니다.

    function firstDayOfWeek($date)
    {
        $day = DateTime::createFromFormat('m-d-Y', $date);
        $day->setISODate((int)$day->format('o'), (int)$day->format('W'), 1);
        return $day->format('m-d-Y');
    }
    
    var_dump(firstDayOfWeek('06-13-2013'));
    

    산출:-

    string '06-10-2013' (length=10)
    

    이것은 연도 경계와 윤년을 다룰 것입니다.

  8. ==============================

    8.다음 코드는 사용자 정의 날짜와 함께 작동하며 원하는 날짜 형식을 사용합니다.

    다음 코드는 사용자 정의 날짜와 함께 작동하며 원하는 날짜 형식을 사용합니다.

    $custom_date = strtotime( date('d-m-Y', strtotime('31-07-2012')) ); 
    $week_start = date('d-m-Y', strtotime('this week last monday', $custom_date));
    $week_end = date('d-m-Y', strtotime('this week next sunday', $custom_date));
    echo '<br>Start: '. $week_start;
    echo '<br>End: '. $week_end;
    

    나는 PHP 5.2.17로 코드를 테스트했다. 결과 :

    Start: 30-07-2012
    End: 05-08-2012
    
  9. ==============================

    9.이건 어때?

    이건 어때?

    $first_day_of_week = date('m-d-Y', strtotime('Last Monday', time()));
    $last_day_of_week = date('m-d-Y', strtotime('Next Sunday', time()));
    
  10. ==============================

    10.일주일의 첫 번째 날을 월요일로 가정하면 다음과 같이 작동합니다.

    일주일의 첫 번째 날을 월요일로 가정하면 다음과 같이 작동합니다.

    echo date("M-d-y", strtotime('last monday', strtotime('next week', time())));
    
  11. ==============================

    11.여기에 나는 주일의 마지막 날로 일요일과 토요일로 일요일을 고려하고 있습니다.

    여기에 나는 주일의 마지막 날로 일요일과 토요일로 일요일을 고려하고 있습니다.

    $m = strtotime('06-08-2012');  
    $today =   date('l', $m);  
    $custom_date = strtotime( date('d-m-Y', $m) );   
    if ($today == 'Sunday') {  
       $week_start = date("d-m-Y", $m);  
    } else {  
      $week_start = date('d-m-Y', strtotime('this week last sunday', $custom_date));  
    }  
    
    if ($today == 'Saturday') {  
      $week_end = date("d-m-Y", $m);
    } else {  
      $week_end = date('d-m-Y', strtotime('this week next saturday', $custom_date));  
    }
    echo '<br>Start: '. $week_start;  
    echo '<br>End: '. $week_end;  
    

    출력 :

    시작 : 05-08-2012    끝 : 11-08-2012

  12. ==============================

    12.이것은 내가 어떤 날짜에서 첫 번째와 마지막 날을 잡기 위해 사용하고있는 것입니다. 이 경우 월요일은 그주의 첫날입니다 ...

    이것은 내가 어떤 날짜에서 첫 번째와 마지막 날을 잡기 위해 사용하고있는 것입니다. 이 경우 월요일은 그주의 첫날입니다 ...

    $date = date('Y-m-d') // you can put any date you want
    $nbDay = date('N', strtotime($date));
    $monday = new DateTime($date);
    $sunday = new DateTime($date);
    $monday->modify('-'.($nbDay-1).' days');
    $sunday->modify('+'.(7-$nbDay).' days');
    
  13. ==============================

    13.이건 어때?

    이건 어때?

    $day_of_week = date('N', strtotime($string_date));
    $week_first_day = date('Y-m-d', strtotime($string_date . " - " . ($day_of_week - 1) . " days"));
    $week_last_day = date('Y-m-d', strtotime($string_date . " + " . (7 - $day_of_week) . " days"));
    
  14. ==============================

    14.이 시도:

    이 시도:

    function week_start_date($wk_num, $yr, $first = 1, $format = 'F d, Y')
    {
        $wk_ts  = strtotime('+' . $wk_num . ' weeks', strtotime($yr . '0101'));
        $mon_ts = strtotime('-' . date('w', $wk_ts) + $first . ' days', $wk_ts);
        return date($format, $mon_ts);
    }
    
    $sStartDate = week_start_date($week_number, $year);
    $sEndDate   = date('F d, Y', strtotime('+6 days', strtotime($sStartDate)));
    

    (이 포럼 스레드에서)

  15. ==============================

    15.이것은 내가 찾은 가장 짧고 가장 읽기 쉬운 솔루션입니다.

    이것은 내가 찾은 가장 짧고 가장 읽기 쉬운 솔루션입니다.

        <?php
        $weekstart = strtotime('monday this week');
        $weekstop = strtotime('sunday this week 23:59:59');
        //echo date('d.m.Y H:i:s', $weekstart) .' - '. date('d.m.Y H:i:s', $weekstop);
        ?>
    

    strtotime은 새 DateTime () -> getTimestamp ()보다 빠릅니다.

  16. ==============================

    16.단지 날짜를 사용하십시오 ($ format, strtotime ($ date, 'LAST SUNDAY + 1 DAY'));

    단지 날짜를 사용하십시오 ($ format, strtotime ($ date, 'LAST SUNDAY + 1 DAY'));

  17. ==============================

    17.PHP 5.3 이전 버전의 함수를 사용하면 주어진 날짜의 첫 번째 요일을 제공합니다 (이 경우 - 2013-02-03 일요일).

    PHP 5.3 이전 버전의 함수를 사용하면 주어진 날짜의 첫 번째 요일을 제공합니다 (이 경우 - 2013-02-03 일요일).

    <?php
      function startOfWeek($aDate){
        $d=strtotime($aDate);
        return strtotime(date('Y-m-d',$d).' - '.date("w",$d).' days');
      }
    
      echo(date('Y-m-d',startOfWeek("2013-02-07")).'
    ');
    ?>
    
  18. ==============================

    18.

    $today_day = date('D'); //Or add your own date
    $start_of_week = date('Ymd');
    $end_of_week = date('Ymd');
    
    if($today_day != "Mon")
        $start_of_week = date('Ymd', strtotime("last monday"));
    
    if($today_day != "Sun")
                        $end_of_week = date('Ymd', strtotime("next sunday"));
    
  19. ==============================

    19.

    $monday = date('d-m-Y',strtotime('last monday',strtotime('next monday',strtotime($date))));
    

    다음달 월요일에 먼저 다음 월요일의 '지난 월요일'을 얻어야합니다. 따라서 주어진 날짜가 월요일 인 경우 지난 주 월요일과 동일한 날짜를 반환합니다.

  20. ==============================

    20.월요일이 시작되기를 원하는 경우 다음과 같이하십시오.

    월요일이 시작되기를 원하는 경우 다음과 같이하십시오.

    $date = '2015-10-12';
    $day = date('N', strtotime($date));
    $week_start = date('Y-m-d', strtotime('-'.($day-1).' days', strtotime($date)));
    $week_end = date('Y-m-d', strtotime('+'.(7-$day).' days', strtotime($date)));
    
  21. ==============================

    21.strptime ()을 사용하여 날짜를 구문 분석하고 결과에 date ()를 사용합니다.

    strptime ()을 사용하여 날짜를 구문 분석하고 결과에 date ()를 사용합니다.

    date('N', strptime('%m-%d-%g', $dateString));
    
  22. ==============================

    22.

    <?php
    /* PHP 5.3.0 */
    
    date_default_timezone_set('America/Denver'); //Set apprpriate timezone
    $start_date = strtotime('2009-12-15'); //Set start date
    
    //Today's date if $start_date is a Sunday, otherwise date of previous Sunday
    $today_or_previous_sunday = mktime(0, 0, 0, date('m', $start_date), date('d', $start_date), date('Y', $start_date)) - ((date("w", $start_date) ==0) ? 0 : (86400 * date("w", $start_date)));
    
    //prints 12-13-2009 (month-day-year)
    echo date('m-d-Y', $today_or_previous_sunday);
    
    ?>
    

    (참고 : 질문에 MM, dd 및 yyyy는 표준 php 날짜 형식 구문이 아닙니다. 의미가 무엇인지 확신 할 수 없으므로 ISO 시작일 및 월 날짜를 $ start_date로 설정합니다)

  23. ==============================

    23.그것을하는 또 다른 방법 ....

    그것을하는 또 다른 방법 ....

    $year = '2014';
    $month = '02';
    $day = '26';
    
    $date = DateTime::createFromFormat('Y-m-d H:i:s', $year . '-' . $month . '-' . $day . '00:00:00');
    $day = date('w', $date->getTimestamp());
    
    // 0=Sunday 6=Saturday
    if($day!=0){
    
       $newdate = $date->getTimestamp() - $day * 86400;  //86400 seconds in a day
    
       // Look for DST change 
       if($old = date('I', $date->getTimestamp()) != $new = date('I', $newdate)){
           if($old == 0){
               $newdate -= 3600;  //3600 seconds in an hour
           } else {
               $newdate += 3600;
           }
       }
    
       $date->setTimestamp($newdate);
    }
    
    echo $date->format('D Y-m-d H:i:s');
    
  24. ==============================

    24.이번 주 첫날 (월요일)을 얻는 가장 쉬운 방법은 다음과 같습니다.

    이번 주 첫날 (월요일)을 얻는 가장 쉬운 방법은 다음과 같습니다.

    strtotime("next Monday") - 604800;
    

    여기서 604800은 1 주 (60 * 60 * 24 * 7)의 초 수입니다.

    이 코드는 다음 월요일에 가져와 1 주일 동안 줄입니다. 이 코드는 어느 요일에도 잘 작동합니다. 오늘이 월요일이라해도.

  25. ==============================

    25.나는 나의 시간대가 호주이고 strtotime ()이 영국 날짜를 싫어한다는 점을 감안할 때 상당히 실망 스럽다.

    나는 나의 시간대가 호주이고 strtotime ()이 영국 날짜를 싫어한다는 점을 감안할 때 상당히 실망 스럽다.

    현재 날짜가 일요일이면 strtotime ( "오늘 주 월요일")은 그 다음 날을 반환합니다.

    이것을 극복하기 위해서 :

    $startOfWeek = (date('l') == 'Monday') ? date('d/m/Y 00:00') : date('d/m/Y', strtotime("last monday 00:00"));
    $endOfWeek = (date('l') == 'Sunday') ? date('d/m/Y 23:59:59') : date('d/m/Y', strtotime("sunday 23:59:59"));
    
  26. ==============================

    26.이렇게하는 현명한 방법은 PHP가 시간대 차이와 일광 절약 시간 (DST)을 처리하도록하는 것입니다. 어떻게하는지 보여 드리죠.

    이렇게하는 현명한 방법은 PHP가 시간대 차이와 일광 절약 시간 (DST)을 처리하도록하는 것입니다. 어떻게하는지 보여 드리죠.

    이 함수는 월요일부터 금요일까지의 모든 날을 생성합니다 (작업 주일을 생성하는 데 편리합니다).

    class DateTimeUtilities {
        public static function getPeriodFromMondayUntilFriday($offset = 'now') {
            $now = new \DateTimeImmutable($offset, new \DateTimeZone('UTC'));
            $today = $now->setTime(0, 0, 1);
    
            $daysFromMonday = $today->format('N') - 1;
    
            $monday = $today->sub(new \DateInterval(sprintf('P%dD', $daysFromMonday)));
            $saturday = $monday->add(new \DateInterval('P5D'));
    
            return new \DatePeriod($monday, new \DateInterval('P1D'), $saturday);
        }
    }
    
    foreach (DateTimeUtilities::getPeriodFromMondayUntilFriday() as $day) {
        print $day->format('c');
        print PHP_EOL;
    }
    

    그러면 현재 주중 월요일 - 금요일의 datetimes가 반환됩니다. 임의의 날짜에 대해서도 동일하게하려면 DateTime Utilities :: get Period FromMondayUntilFriday에 매개 변수로 날짜를 전달합니다. 따라서 :

    foreach (DateTimeUtilities::getPeriodFromMondayUntilFriday('2017-01-02T15:05:21+00:00') as $day) {
        print $day->format('c');
        print PHP_EOL;
    }
    
    //prints 
    //2017-01-02T00:00:01+00:00
    //2017-01-03T00:00:01+00:00
    //2017-01-04T00:00:01+00:00
    //2017-01-05T00:00:01+00:00
    //2017-01-06T00:00:01+00:00
    

    OP 만 질문 했으므로 월요일에만 관심이 있습니까?

    $monday = DateTimeUtilities::getPeriodFromMondayUntilFriday('2017-01-02T15:05:21+00:00')->getStartDate()->format('c');
    print $monday;
    // prints
    //2017-01-02T00:00:01+00:00
    
  27. ==============================

    27.지난 주 첫날에 한 개의 라이너가 있고 지난 주 마지막 날에 DateTime 객체가 있습니다.

    지난 주 첫날에 한 개의 라이너가 있고 지난 주 마지막 날에 DateTime 객체가 있습니다.

    $firstDay = (new \DateTime())->modify(sprintf('-%d day', date('w') + 7))
                                 ->setTime(0, 0, 0);
    $lastDay = (new \DateTime())->modify(sprintf('-%d day', date('w') + 1))
                                ->setTime(23, 59, 59);
    
  28. ==============================

    28.나는이 질문에 대해 몇 번이나와 봤으며 항상 더 쉽게 또는 명확하게 날짜 기능을 사용하지 않는다는 사실에 놀랐다. DateTime 클래스를 사용하는 PHP5에 대한 내 솔루션은 다음과 같습니다.

    나는이 질문에 대해 몇 번이나와 봤으며 항상 더 쉽게 또는 명확하게 날짜 기능을 사용하지 않는다는 사실에 놀랐다. DateTime 클래스를 사용하는 PHP5에 대한 내 솔루션은 다음과 같습니다.

    /**
     * @param DateTime $date A given date
     * @param int $firstDay 0-6, Sun-Sat respectively
     * @return DateTime
     */
    function getFirstDayOfWeek(DateTime $date, $firstDay = 0) {
        $offset = 7 - $firstDay;
        $ret = clone $date;
        $ret->modify(-(($date->format('w') + $offset) % 7) . 'days');
        return $ret;
    }
    

    원래 날짜를 변경하지 않으려면 복제해야합니다.

  29. ==============================

    29.는 어때:

    는 어때:

    $date = "2013-03-18"; 
    $searchRow = date("d.m.Y", strtotime('last monday',strtotime($date." + 1 day")));
    echo "for date " .$date ." we get this monday: " ;echo $searchRow; echo '<br>';
    

    그것의 가장 좋은 방법은 아니지만 나는 테스트를 거쳤고 만약 내가 이번 주에 내가 올바른 월요일에 도착한다면 나는 월요일에 그 월요일을 얻을 것이다.

  30. ==============================

    30.이 솔루션이 도움이된다는 사실을 알았습니다. 이전 월요일을 얻기 위해 월요일이 아닌지 그냥 빼십시오. 저는 이전 월요일에 조정해야하는 쿼리에서 가져온 날짜로 $ lower_date를 사용하고 있습니다.

    이 솔루션이 도움이된다는 사실을 알았습니다. 이전 월요일을 얻기 위해 월요일이 아닌지 그냥 빼십시오. 저는 이전 월요일에 조정해야하는 쿼리에서 가져온 날짜로 $ lower_date를 사용하고 있습니다.

    //set this up to go backwards until you find monday
    while(date('D',strtotime($lower_date))!='Mon'){
        $lower_date = date('Y-m-d', strtotime($lower_date . ' - 1 day')); //increase the upper spec
    }
    
  31. from https://stackoverflow.com/questions/1897727/get-first-day-of-week-in-php by cc-by-sa and MIT license