세계의 특정 도시의 현재 시간이 DST에 있는지 여부를 어떻게 알 수 있습니까? PHP 함수가 있습니까?DST에 현재 시간이 있는지 여부를 확인하는 방법은 무엇입니까?
3
A
답변
4
저는 PHP 사용자가 아니지만 가능한 것처럼 보입니다.하지만 어색합니다.
DateTimeZone이 있으면 현재 오프셋 과 전환 세트을 찾을 수 있습니다. 따라서 "지금"에서 전환을 요청하면 현재 시간대에 대한 정보를 찾을 수 있습니다. the docs에서 약간 변형 예 : 그래서 여기에 PHP 내 C++ 시간대 코드의 빠른 포트입니다,
$theTime = time(); # specific date/time we're checking, in epoch seconds.
$tz = new DateTimeZone('America/Los_Angeles');
$transition = $tz->getTransitions($theTime,$theTime);
# only one array should be returned into $transition.
$dst = $transition[0]['isdst'];
2
글쎄, 그것은 옳은 일을하도록되어 isdst
처럼 들리 겠지만 내가 전에 물린했습니다
// given a timezone and a timestamp
// return true if timezone has DST at timestamp, false otherwise
// timezone defaults to current timezone
// timestamp defaults to now
function is_dst($timezone = null, $time = null) {
$oldtimezone = date_default_timezone_get();
if (isset($timezone)) {
date_default_timezone_set($timezone);
}
if (!isset($time)) {
$time = time();
}
$tm = localtime($time, true);
$isdst = $tm['tm_isdst'];
$offset = 0;
//$dsttime = mktime_array($tm);
//echo strftime("%c", $dsttime);
$tm['tm_isdst'] = 0;
$nondsttime = mktime_array($tm);
$offset = $nondsttime - $time;
date_default_timezone_set($oldtimezone);
return $offset != 0;
}
function mktime_array($tm) {
return mktime($tm['tm_hour'], $tm['tm_min'], $tm['tm_sec'], $tm['tm_mon']+1, $tm['tm_mday'], $tm['tm_year']+1900, isset($tm['tm_isdst'])? $tm['tm_isdst']: -1);
}
그리고 당신이 사용할 수있는 몇 가지 코드를 테스트 : 나를 위해
foreach (array(null, "Australia/Sydney", "UTC", "America/Los_Angeles") as $tz) {
$isdst = is_dst($tz);
if (isset($tz)) {
echo $tz;
}
else {
echo "current timezone";
}
echo " ";
if ($isdst) {
echo "has daylight savings now\n";
}
else {
echo "has standard time now\n";
}
}
// tests based on known transitions for Sydney (AEST)
foreach (array(null, "2011-04-03 01:59:00", "2011-04-03 02:00:00", "2011-10-02 01:59:00", "2011-10-02 03:00:00") as $timestr) {
$tz = "Australia/Sydney";
if (isset($timestr)) {
$tm = strptime($timestr, "%Y-%m-%d %H:%M:%S");
$time = mktime_array($tm);
}
else {
$time = time();
}
$isdst = is_dst($tz, $time);
if (isset($tz)) {
echo $tz;
}
else {
echo "current timezone";
}
echo " ";
if ($isdst) {
echo "has daylight savings at $timestr\n";
}
else {
echo "has standard time at $timestr\n";
}
}
를, 그것은 인쇄 :
current timezone has daylight savings now
Australia/Sydney has daylight savings now
UTC has standard time now
America/Los_Angeles has standard time now
Australia/Sydney has daylight savings at
Australia/Sydney has daylight savings at 2011-04-03 01:59:00
Australia/Sydney has standard time at 2011-04-03 02:00:00
Australia/Sydney has standard time at 2011-10-02 01:59:00
Australia/Sydney has daylight savings at 2011-10-02 03:00:00
관련 문제
- 1. 메일 서버가 있는지 여부를 확인하는 방법은 무엇입니까?
- 2. Perl에 디렉토리가 있는지 여부를 확인하는 방법은 무엇입니까?
- 3. 저장소가 있는지 여부를 확인하는 방법은 무엇입니까?
- 4. 현재 Windows 세션이 잠겨져 있는지 확인하는 방법은 무엇입니까?
- 5. 트리거가 SQL Server에 있는지 여부를 확인하는 가장 유용한 방법은 무엇입니까?
- 6. 테이블의 열이 비어 있는지 여부를 확인하는 더 좋은 방법은 무엇입니까?
- 7. 자바 스크립트를 사용하여 디렉토리에 파일이 있는지 여부를 확인하는 방법은 무엇입니까?
- 8. 아이폰에서, 앱이 인터넷에 있는지 여부를 확인하는 방법은 무엇입니까?
- 9. jtextarea의 변경 사항이 있는지 여부를 확인하는 방법은 무엇입니까?
- 10. 엑셀 셀이 잠겨 있는지 여부를 확인하는 방법은 무엇입니까?
- 11. Java에 테이블에 값이 있는지 여부를 확인하는 방법은 무엇입니까?
- 12. 번들 내에 이미지가 있는지 여부를 확인하는 방법은 무엇입니까?
- 13. 현지화가 있는지 확인하는 방법은 무엇입니까?
- 14. 어레이가 있는지 확인하는 방법은 무엇입니까?
- 15. 밀리 초 단위로 주어진 시간이 현재 주 내에 있는지 확인합니다.
- 16. 종료가 현재 진행 중인지 확인하는 방법은 무엇입니까?
- 17. 프로세스가 PHP로 종료되었는지 여부를 확인하는 방법은 무엇입니까?
- 18. 현재 어떤 자바 스크립트 코드가 실행되고 있는지 확인하는 방법은 무엇입니까?
- 19. 현재 HTML 표의 마지막 행에 있는지 확인하는 방법은 무엇입니까?
- 20. 음악이 현재 Windows Phone 7에서 재생되고 있는지 확인하는 방법은 무엇입니까?
- 21. ASP.NET 페이지가 캐시에 있는지 여부를 확인하는 방법?
- 22. 요소가 이미 배열에 있는지 여부를 확인하는 방법
- 23. SqlCe 쿼리에 행이 있는지 여부를 확인하는 방법?
- 24. 값이 집합에 있는지 여부를 확인하는 대체
- 25. TextArea가 GWT에 포커스가 있는지 여부를 확인하는 방법
- 26. 포인트가 Quad2DCurve에 있는지 여부를 확인하는 방법
- 27. 연결된 목록에 루프가 있는지 여부를 확인하는 방법?
- 28. 개체가 있는지 확인하는 방법은 무엇입니까?
- 29. 이미지보기에 이미지가 있는지 확인하는 방법은 무엇입니까?
- 30. 필드에 포커스가 있는지 확인하는 방법은 무엇입니까?
C에서 적어도 is_dst는 ** 잘못된 **입니다. 시간대에 일광 절약 시간제가 적용되는지 여부는 알려주지 만 반드시 필요하지는 않습니다. – Mikel
@Mikel : 시간대를 묻지 않습니다. 나는 현재 적용되고있는 전환 *을 요구하고있다. (또는 이전의 전환 결과, 현재 상태입니다.) –
실제로 FreeBSD 및 Linux/glibc처럼 보이지만 is_dst는 일광 절약 시간이 지정된 시간에 적용될 경우에만 1이므로 귀하가 내 의견을 무시할 수 있다면. 나는 그것이 모든 시스템에서 이식 가능하지 않다는 것을 기억합니다. – Mikel