UTC có quan sát thời gian tiết kiệm ánh sáng ban ngày không?


83

Tôi đang cố gắng viết một tập lệnh mà tôi muốn chuyển đổi bất kỳ múi giờ nào thành UTCvà đảo ngược. Nhưng từ một số nơi tôi biết rằng trong khi chuyển đổi bất kỳ múi giờ nào thành UTC có hoặc không có DST xem xét, nó sẽ cung cấp cùng một UTCthời gian. Ví dụ: Nếu tôi cố gắng chuyển đổi cái này:

$mytime = '2011-03-31 05:06:00.000';
$myzone = 'America/New_York';

sang UTC với DST và không có DST, tôi sẽ nhận được ..

(New_York->UTC DST=Yes)2011-03-31 09:06:00
(New_York->UTC DST=No)2011-03-31 09:06:00 ..........

Cái này có dựng không ?? Nếu có thì tại sao ??? Xin vui lòng bất kỳ ai cho tôi câu trả lời của bạn.


Nếu bạn cho chúng tôi xem kịch bản, chúng tôi có thể giúp bạn tốt hơn một chút.
Kevin Lacquement,

4
Và, để trả lời cho câu hỏi tiêu đề của bạn, không có UTC nào không tuân theo tiết kiệm ánh sáng ban ngày; các khu vực khác, tuy nhiên, có thể.
Kevin Lacquement,

Câu trả lời:


137

Không, bản thân UTC không bao giờ có DST. Nó là hệ quy chiếu không đổi các múi giờ khác được biểu thị liên quan đến.

Từ trang Wikipedia UTC :

UTC không thay đổi theo sự thay đổi của các mùa, nhưng giờ địa phương hoặc giờ dân sự có thể thay đổi nếu khu vực pháp lý của múi giờ quan sát giờ tiết kiệm ánh sáng ban ngày hoặc giờ mùa hè. Ví dụ: UTC đi trước 5 giờ so với giờ địa phương trên bờ biển phía đông của Hoa Kỳ vào mùa đông, nhưng trước 4 giờ vào mùa hè.

Nói cách khác, khi múi giờ quan sát DST, phần bù của nó so với UTC thay đổi khi có sự chuyển đổi DST, nhưng đó là múi giờ quan sát DST, không phải UTC.

Nếu không biết nhiều về việc xử lý múi giờ PHP, có vẻ lạ đối với tôi rằng bạn có thể chỉ định "có DST" hoặc "không có DST" trong một chuyển đổi - các múi giờ tự chỉ định khi DST bắt đầu ... điều đó không nhất thiết phải như vậy một cái gì đó bạn chỉ định cho mình.


1
"Không biết nhiều về xử lý múi giờ PHP, tôi thấy lạ khi bạn có thể chỉ định 'có DST' hoặc 'không có DST' trong một chuyển đổi" ... đó có thể là do bạn chưa làm nhiều Pasta siêu liên kết có thể lập trình. Đây là ngôn ngữ có date_sunrisechức năng nội sẵn để cho bạn biết khi nào mặt trời mọc. Tôi không chắc liệu DST có cần thiết để chuyển đổi hay không, nhưng nó là công dân hạng nhất của đối tượng ngày tháng: php.net/manual/en/ Chức năng.date.php .
Paul Draper,

@PaulDraper: Là công dân hạng nhất của đối tượng ngày tháng có ý nghĩa nhất định - chỉ cần không chỉ định riêng nó cho việc chuyển đổi. Tôi đã kể từ khi học thêm một chút về một số thói quen C cơ bản, tuy nhiên, và tôi nghi ngờ họ có nhiều việc phải làm với điều này ...
Jon Skeet

1
Tôi nghĩ không sao nếu hỏi nó là DST. Người ta không thể chuyển từ múi giờ địa phương + sang múi giờ UTC rõ ràng mà không có thông tin bổ sung đó. Điều này là do một số thời gian cục bộ xảy ra hai lần trong quá trình chuyển đổi ra khỏi DST.
Tom

@Tom: Tôi biết rất rõ về giờ địa phương xảy ra hai lần, nhưng điều đó không có nghĩa là bạn nên chỉ định xem giờ địa phương có ở DST trong chính chuyển đổi hay không. Tốt hơn là - IMO - chỉ định một cách giải quyết sự không rõ ràng nếu nó không rõ ràng. Tôi muốn các API tránh cho phép bạn diễn đạt các tình huống bất khả thi, chẳng hạn như EDT vào tháng Giêng.
Jon Skeet

1
Nếu bạn bối rối về cách thực hiện múi giờ trong PHP, đó là bởi vì PHP là một mớ hỗn độn, đây là một bài viết tuyệt vời về lý do tại sao php nên được gỡ bỏ: eev.ee/blog/2012/04/09/php-a-fractal- of-xấu-thiết kế
Lucent Fox

1

Tôi đang gặp sự cố tương tự, sử dụng mã này:

date_default_timezone_set('UTC');
$nowdate = date('l jS \of F Y h:i:s A');
echo "Current date and time is: " . $nowdate;

Bây giờ là mùa hè và thời gian mã này tạo ra chậm hơn một giờ - vì vậy tôi không nghĩ rằng thời gian UTC trong PHP điều chỉnh thành DST.

Hãy thú vị để xem nếu có ai có giải pháp ...

BIÊN TẬP:

Tìm thấy mã này trên một diễn đàn, hoạt động hoàn hảo !!

date_default_timezone_set('Europe/London');
$TIME =  date("m/d/Y H:i",time());

Vì vậy, bạn có thể gọi ngày và giờ hiện tại bằng cách sử dụng $ TIME. Đầu ra có thể được điều chỉnh để hiển thị khác bằng cách thay đổi bit bên trong thẻ date (). Nếu bạn muốn điều chỉnh đầu ra ngày (), hãy sử dụng hướng dẫn này: http://php.net/manual/en/ Chức năng.time.php

Hi vọng điêu nay co ich :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.