[php] 특정 시간대의 PHP에서 요일을 찾는 방법

날짜 / 시간을 처리하기 위해 PHP를 사용하는 동안 혼란 스럽습니다.

내가하려는 것은 이것이다 : 사용자가 내 페이지를 방문 할 때 나는 그의 시간대를 묻고 그의 시간대에 ‘요일’을 표시합니다.

나는 브라우저의 날을 사용하고 싶지 않습니다. 이 계산을 PHP에서하고 싶습니다.

이것이 내가 그것을 달성하려는 방법입니다.

  1. 사용자가 입력 한 시간대
  2. php time () 함수로 계산 된 Unix 타임 스탬프.

하지만 어떻게 진행해야할지 모르겠습니다.이 시간대에서 ‘요일’을 어떻게 얻을 수 있을까요?



답변

$dw = date( "w", $timestamp);

여기에서 볼 수 있듯이 $ dw는 0 (일요일)에서 6 (토요일)입니다.
http://www.php.net/manual/en/function.date.php


답변

내 해결책은 다음과 같습니다.

$tempDate = '2012-07-10';
echo date('l', strtotime( $tempDate));

출력은 다음과 같습니다. Tuesday

$tempDate = '2012-07-10';
echo date('D', strtotime( $tempDate));

출력은 다음과 같습니다. Tue


답변

나는 이것이 정답이라고 생각 Europe/Stockholm하며 사용자 시간대로 변경 하십시오.

$dateTime = new \DateTime(
    'now',
    new \DateTimeZone('Europe/Stockholm')
);
$day = $dateTime->format('N');

요일의 ISO-8601 숫자 표현 (PHP 5.1.0에 추가됨) 1 (월요일) ~ 7 (일요일)

http://php.net/manual/en/function.date.php

지원되는 시간대 목록은 http://php.net/manual/en/timezones.php를 참조
하십시오.


답변

빠른 의견을 보내 주셔서 감사합니다.

이것이 제가 지금 사용할 것입니다. 누군가가 사용할 수 있도록 여기에 함수를 게시합니다.

public function getDayOfWeek($pTimezone)
{

    $userDateTimeZone = new DateTimeZone($pTimezone);
    $UserDateTime = new DateTime("now", $userDateTimeZone);

    $offsetSeconds = $UserDateTime->getOffset();
    //echo $offsetSeconds;

    return gmdate("l", time() + $offsetSeconds);

}

수정 사항이 있으면 신고하십시오.


답변

또 다른 빠른 방법 :

date_default_timezone_set($userTimezone);
echo date("l");


답변

시간대 오프셋을 얻을 수있는 경우 현재 타임 스탬프에 추가 한 다음 gmdate 함수를 사용하여 현지 시간을 가져올 수 있습니다.

// let's say they're in the timezone GMT+10
$theirOffset = 10;  // $_GET['offset'] perhaps?
$offsetSeconds = $theirOffset * 3600;
echo gmdate("l", time() + $offsetSeconds);


답변

$myTimezone = date_default_timezone_get();
date_default_timezone_set($userTimezone);
$userDay = date('l', $userTimestamp);
date_default_timezone_set($myTimezone);

이것은 작동합니다 (테스트하지 않았으므로 YMMV). 스크립트의 현재 시간대를 저장하고 사용자가 지정한 시간대로 변경하고date() , 지정된 타임 스탬프 함수에서 다음 스크립트의 시간대를 원래의 시간대로 다시 설정하여 작동합니다.

하지만 시간대 식별자로 모험을 할 수도 있습니다.