Cách lấy múi giờ trong PHP?

Trong PHP, làm việc với múi giờ khá thú vị bằng cách sử dụng các hàm khác nhau trong PHP date/time. Trong bài viết này, chúng tôi sẽ đề cập đến danh sách các mục sau đây

  • Cách nhận danh sách các mã định danh múi giờ được PHP hỗ trợ
  • Trình lấy và đặt múi giờ PHP
  • Chuyển đổi múi giờ PHP

Cách lấy danh sách Mã định danh múi giờ được hỗ trợ PHP

Kể từ phiên bản PHP 5. 2, nó giới thiệu lớp DateTimeZone trong đó hàm có tên listIdentifiers() được định nghĩa. Hàm này sẽ trả về danh sách tất cả các mã định danh dưới dạng một chuỗi chuỗi kết hợp

Hàm này chấp nhận hai đối số tùy chọn, như,

  • Hằng số DateTimeZone – Đối số này được sử dụng để trả về một mảng các mã định danh múi giờ đối với lục địa, tiểu lục địa, quốc gia, v.v. Nếu nó được chỉ định là TẤT CẢ hoặc nếu nó trống, thì tất cả các mã định danh có sẵn sẽ được trả về
  • Mã quốc gia – Mã gồm hai ký tự tiêu chuẩn được sử dụng để đại diện cho quốc gia cho đối số thứ hai này. Và nó yêu cầu đối số đầu tiên phải là PER_COUNTRY

Chúng ta có thể gọi hàm này với các tham chiếu của tên lớp bằng cách sử dụng toán tử phân giải phạm vi PHP như bên dưới

";
print_r($timezoneIderntifiers);
print "
"; ?>

Kể từ DateTimeZone. listIdentifiers() không có đối số, chương trình trên sẽ trả về tất cả múi giờ khả dụng để hiển thị cho trình duyệt

Trong PHP, có một bí danh của hàm lớp DateTimeZone này, được đặt tên là timezone_identifiers_list(). Tuy nhiên, vì nên sử dụng mã được nâng cấp như chúng ta đã thấy trong bài viết Độ dài mảng PHP, nên chúng ta có thể ưu tiên hàm lớp DateTimeZone được hiển thị trong ví dụ trên

Trình lấy và đặt múi giờ PHP

PHP bao gồm hai hàm có tên là date_default_timezone_get() và date_default_timezone_set(), tương ứng là trình lấy và đặt múi giờ

  • date_default_timezone_get() – Hàm này sẽ trả về múi giờ được đặt bằng cách sử dụng trình thiết lập múi giờ PHP hoặc một giá trị được chỉ định bằng php. ngày đầu tiên. chỉ thị múi giờ nếu có. (Phiên bản PHP dưới 5. 4, hàm này có thể lấy giá trị $_ENV[“TZ”], nếu có. )
  • date_default_timezone_set() – Hàm này chấp nhận định dạng chuỗi múi giờ được PHP hỗ trợ làm đối số

Trong chương trình sau, trình lấy múi giờ PHP trả về giá trị của tệp php. ini cho đến khi nó bị ghi đè bởi chức năng setter như hình bên dưới

";
date_default_timezone_set('Asia/Kolkata');
$timezone_identifier = date_default_timezone_get();
echo $timezone_identifier;
?>

Các hàm PHP khác để lấy/đặt múi giờ

  • date(‘e’) / date(‘T’) –  Hàm date() được sử dụng để nhận mã định danh múi giờ bằng cách chuyển ‘e’ làm đối số của nó. Khi chúng ta chuyển 'T' cho chức năng này, thì nó sẽ trả về múi giờ viết tắt
  • setTimezone() – Hàm này được sử dụng để đặt múi giờ cho một đối tượng DateTime bằng mã định danh múi giờ đã cho làm đối số của nó

Chuyển đổi múi giờ PHP

Trong PHP, không có chức năng sẵn có để chuyển đổi từ múi giờ này sang múi giờ khác. Thay vào đó, chúng ta có thể lấy quy trình chuyển đổi này bằng cách tạo một phiên bản DateTimeZone cho múi giờ được yêu cầu và phiên bản này sẽ được áp dụng cho đối tượng ngày-giờ liên quan đến chuyển đổi múi giờ. Ví dụ,

Khi làm việc trên một ứng dụng PHP quy mô lớn, trong đó người dùng từ khắp nơi trên thế giới đang truy cập và nhập dữ liệu, chúng ta cần tạo múi giờ và đặt ngày giờ chuẩn cho tất cả người dùng. Điều này là để dễ dàng chuyển đổi ngày và giờ theo múi giờ của người dùng

Có một vài hàm dựng sẵn của PHP mà chúng ta có thể sử dụng để lấy và đặt múi giờ. Chúng ta có thể gọi hàm PHP tích hợp này để lấy múi giờ mặc định

# php
echo date_default_timezone_get();

Nó sẽ lấy tên múi giờ mặc định như hình bên dưới

đầu ra

get default timezone in PHP

Múi giờ mặc định là UTC từ các kết quả trên, nhưng chúng ta có thể dễ dàng thay đổi nó bằng một hàm tích hợp PHP khác. Vì vậy, hãy thay đổi múi giờ mặc định của chúng tôi như hình bên dưới

# php
date_default_timezone_set("Europe/Amsterdam");
echo date_default_timezone_get();

đầu ra

set default timezone in PHP

Múi giờ mặc định của chúng tôi được đặt thành UTC từ ví dụ trên, nhưng chúng tôi đã thay đổi nó thành Châu Âu/Amsterdam bằng chức năng tích hợp sẵn của PHP

Một hàm tích hợp khác trong PHP được sử dụng để lấy múi giờ của đối tượng DateTime đã cho. Nếu chúng ta có một đối tượng DateTime mà chúng ta muốn tìm múi giờ, chúng ta có thể nhanh chóng lấy nó bằng hàm sau

# php
$date=date_create(null,timezone_open("Europe/Amsterdam"));
$timezone=date_timezone_get($date);
echo timezone_name_get($timezone);

đầu ra

get timezone in PHP example

Như bạn có thể thấy, chúng tôi đã tạo một ngày mới với múi giờ Châu Âu/Amsterdam. Với sự trợ giúp của chức năng tích hợp sẵn của PHP, chúng tôi có thể trích xuất múi giờ từ đối tượng DateTime đó

Làm cách nào để có được thời gian Singapore bằng PHP?

Làm cách nào để đặt Timezone trong mã PHP?

Hàm date_default_timezone_set() đặt múi giờ mặc định được sử dụng bởi tất cả các hàm ngày/giờ trong tập lệnh.

Làm cách nào để đặt Timezone trong máy chủ PHP?

Mở Dịch vụ lưu trữ → Quản lý → trang Cấu hình PHP. Ở đó, hãy mở tab tùy chọn PHP và chỉnh sửa ngày. giá trị múi giờ . Nếu bạn không chắc chắn nên chèn múi giờ nào, hãy kiểm tra Bản đồ múi giờ.