2010-08-14 43 views
12

Làm thế nào tôi có thể tìm thấy nước tên -> giờ GMT ngày/giờ để mà tôi có thể làm như sau:Cách tìm ngày giờ GMT theo tên quốc gia?

Ví dụ:

$datetime = new GMT_search('America'); //output: 2010-01-01 00:00:00  
$datetime = new GMT_search('India'); //output: 2010-01-01 ??:??:??  
$datetime = new GMT_search('China'); //output: 2010-01-01 ??:??:?? 

tôi đã cố gắng gmdate(), date_default_timezone_set('Asia/....');, và ini_set('date.timezone','China'); nhưng nó không chính xác giúp tôi tìm thấy tên quốc gia dễ dàng để GMT ngày/giờ.

Mọi người có thể vui lòng cho tôi xem một ví dụ PHP có thực sự hoạt động không?

Cảm ơn bạn

+0

Cần làm rõ, có tìm được múi giờ được hỗ trợ không? –

+3

Điều gì về các quốc gia có nhiều múi giờ? –

+0

Và Trung Quốc cũng thế. Khi nào "Trung Quốc" trở thành một quốc gia? – GZipp

Trả lời

35

Bạn có thể tìm kiếm múi giờ theo quốc gia với DateTimeZone::listIdentifiers.

Ví dụ, để có được những múi giờ ở Bồ Đào Nha:

print_r(DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, "PT")); 

cho:

 
Array 
(
    [0] => Atlantic/Azores 
    [1] => Atlantic/Madeira 
    [2] => Europe/Lisbon 
)

Sau đó bạn có thể làm:

$d = new DateTime("now", new DateTimeZone("Atlantic/Azores")); 
echo $d->format(DateTime::W3C); //2010-08-14T15:22:22+00:00 

Như đã lặp đi lặp lại nhiều lần trong chủ đề này, bạn không thể nhận được một múi giờ duy nhất cho mỗi quốc gia.Các quốc gia có nhiều múi giờ và bạn sẽ nhận thấy rằng thậm chí this page thậm chí không chọn một tùy ý cho một số quốc gia như Hoa Kỳ

+2

Cảm ơn, tôi đã cố gắng tìm cách Quốc gia Tên/Mã đất để tiếp cận Thành phố hoặc múi giờ. ví dụ: print_r (DateTimeZone :: listIdentifiers (DateTimeZone :: PER_COUNTRY, "PT")); – YumYumYum

+2

Điều hoàn hảo/vẻ đẹp của ví dụ mã của bạn là ở đây: 1. Tôi sẽ đặt mã đất bây giờ để tìm kiếm bất cứ điều gì 2. tôi sẽ kiểm tra chiều dài mảng và chọn bất kỳ một 3. tôi có kết quả của tôi. Cảm ơn một lần nữa .. – YumYumYum

3

Here bạn sẽ thấy danh sách đầy đủ của các múi giờ được hỗ trợ bởi PHP, mà có nghĩa là để được sử dụng với ví dụ date_default_timezone_set(). Hỗ trợ cho các quốc gia có nhiều múi giờ cũng thuận tiện để tra cứu. Hãy lấy số example of the American region.

<?php 
date_default_timezone_set('America/New_York'); 
echo date('D,F j, Y, h:i:s A'); 
?> 

Danh sách này là múi giờ hoàn chỉnh được PHP hỗ trợ, có nghĩa là được sử dụng với ví dụ: date_default_timezone_set().

+2

Tôi chỉ có quốc gia, KHÔNG có cơ sở dữ liệu CITY. Làm thế nào bạn có thể làm cho Country To :: GMT_DateTime? – YumYumYum

+2

Tôi có nên tạo, quốc gia có thành phố mặc định không? Tôi không muốn ngày/giờ cụ thể của thành phố? Nhưng một lần nữa tôi có vấn đề với châu Á hay châu Âu ?. ví dụ: $ country = array ('America' => 'New_York', 'India' => 'Mumbai', 'China' => 'Sangai'); – YumYumYum

+0

Có khả năng một quốc gia sẽ có nhiều múi giờ. Vì vậy, cố gắng chuyển đổi tên quốc gia sẽ tạo ra kết quả không chính xác. –

2

Bạn không thể làm điều đó như vậy, vì rất nhiều quốc gia có nhiều múi giờ. Bạn có thể lưu trữ múi giờ theo tên của một thành phố thay vào đó, nhưng tôi sẽ sử dụng một số nguyên với độ lệch múi giờ tính bằng giây.

Bạn có thể nhận được một danh sách các múi giờ theo châu lục/thành phố từ chức năng này: www.php.net/manual/en/function.timezone-identifiers-list.php

Bạn có thể nhận được tương ứng bù đắp từ chức năng này: www.php.net/manual/en/datetimezone.getoffset.php

Khi bạn có bù đắp hợp lệ, bạn có thể sử dụng gmdate() thay vì ngày() để có được ngày ở định dạng của bạn mà không cần điều chỉnh múi giờ/dst. Chỉ cần vượt qua thời gian() + điều chỉnh bạn đã lưu trữ: www.php.net/manual/en/function.gmdate.php

Xin lỗi vì không đăng liên kết, nhưng tôi không có đủ nghiệp.

+2

Tôi đang thử tính năng này khi bạn chỉ chọn TÊN QUỐC GIA. EX: http://wwp.greenwichmeantime.com/time-zone/all.htm – YumYumYum

+2

Điều đó tôi không muốn. Giới thiệu về COUNTRY NAME. – YumYumYum

+1

@Stackfan: Có, tôi đã chọn liên kết "Hoa Kỳ của Hoa Kỳ" đã đưa tôi đến .../múi giờ/Hoa Kỳ và nội dung trang được đề cập. Vì vậy, bạn đã đưa ra một ví dụ về những gì bạn _don't_ muốn? Bạn cũng đã viết 'Có !! Vốn/xuống thị trấn tôi đang nói chuyện. (TÊN QUỐC GIA + VỐN) === TÊN QUỐC GIA === ', đó là ai? 'tên quốc gia' hoặc' tên quốc gia + vốn'? – VolkerK

Các vấn đề liên quan