Hướng dẫn dùng iso formatting trong PHP

Đôi lúc các bạn xem các hướng dẫn về hàm lấy thời gian :date(format,timestamp).

Nếu chưa biết hàm date(format,timestamp) bạn có thể xem ở link:http://congnghe5s.com/bai-viet/xu-ly-ngay-gio-trong-php.html.

Bạn thực hiện test lệnh trên máy và kết quả không khớp với time hiện tại. Đó là vì lí do thời gian hay timezone trên server bạn đã cài đặt khác vì thế để trả về đúng time bạn muốn bạn có thể dùng hàm:

Cú pháp:date_default_timezone_set ( string $timezone_identifier ).

tham số : $timezone_identifier bạn lấy ở đây:http://php.net/manual/en/timezones.asia.php

phù hợp khu vực bạn muốn ví dụ mình muốn set lấy giờ việt nam mình làm như sau:

date_default_timezone_set('Asia/Ho_Chi_Minh').

Sau đó các bạn dùng hàm : echo date('d/m/Y - H:i:s');

ra đúng kết quả time ở Việt Nam.

Ví dụ:

date_default_timezone_set('Asia/Ho_Chi_Minh');

if (date_default_timezone_get()) {
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . '
';
}
echo date('d/m/Y H:i:s');

Ví dụ trên có 1 hàm cũng khá quan trọng : date_default_timezone_get()  trả về timezone mặc định của server bạn đang chạy hoặc là đã được thiết lập thông qua date_default_timezone_set().

Qua bài viết hy vọng các bạn có thêm kiến thức khi xử lý ngày tháng trong PHP.

Xem xét Bài viết trên Wikipedia về ISO_8601 , Chênh lệch UTC có thể được định nghĩa là Định nghĩa Giờ: Phút hay như Định nghĩa GiờMinutes.

Nội dung chính Show

  • Cách chuyển đổi từ ISO 8601 sang unixtimestamp:
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (máy chủ múi giờ):
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (GMT):
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (múi giờ tùy chỉnh):
  • Hướng đối tượng
  • Thủ tục
  • Cách chuyển đổi từ ISO 8601 sang unixtimestamp:
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (máy chủ múi giờ):
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (GMT):
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (múi giờ tùy chỉnh):
  • Đăng nhập để trả lời câu hỏi
  • Có thể bạn quan tâm

Z là bộ chỉ định vùng cho độ lệch UTC bằng không. Do đó, "09:30 UTC" được biểu thị là "09: 30Z" hoặc "0930Z". "14:45:15 UTC" sẽ là "14: 45: 15Z" hoặc "144515Z".

Phương thức ngày trong PHP xác định tham số Z là

Độ lệch múi giờ Z tính bằng giây. Phần bù cho các múi giờ ở phía tây UTC luôn âm và đối với các múi giờ phía đông UTC luôn là số dương.

Vì vậy, giả sử độ lệch được đề cập trong bài viết wikipedia là tính bằng giây, bạn có thể tạo ISO 8601ngày sử dụng của riêng mình . Ví dụ được đưa ra cho ngày / giờ máy chủ hiện tại:

date('Y-m-d\TH:i:s.Z\Z', time());

Ngoài ra, như đã đề cập trong nhận xét của @AndrewIsOffline, kể từ PHP5 , việc sử dụng 'c' cũng sẽ cung cấp cho bạn Ngày ISO 8601:

date('c', time());

11 hữu ích 1 bình luận chia sẻ

Nội dung chính

  • Cách chuyển đổi từ ISO 8601 sang unixtimestamp:
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (máy chủ múi giờ):
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (GMT):
  • Cách chuyển đổi từ unixtimestamp sang ISO 8601 (múi giờ tùy chỉnh):

Cách chuyển đổi từ ISO 8601 sang unixtimestamp:

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

Cách chuyển đổi từ unixtimestamp sang ISO 8601 (máy chủ múi giờ):

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

Cách chuyển đổi từ unixtimestamp sang ISO 8601 (GMT):

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

Cách chuyển đổi từ unixtimestamp sang ISO 8601 (múi giờ tùy chỉnh):

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00

answer

191

Hướng đối tượng

Đây là cách được đề nghị.

$datetime = new DateTime('2010-12-30 23:21:46');

echo $datetime->format(DateTime::ATOM); // Updated ISO8601

Thủ tục

Đối với các phiên bản cũ hơn của PHP hoặc nếu bạn cảm thấy thoải mái hơn với mã thủ tục.

echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46'));

191 hữu ích 5 bình luận chia sẻ

answer

34

Sau PHP 5, bạn có thể sử dụng điều này: echo date("c");mẫu datetime định dạng ISO 8601.

http://ideone.com/nD7piL

Lưu ý cho ý kiến:

Về điều này , cả hai biểu thức này đều hợp lệ cho múi giờ, cho định dạng cơ bản : ±[hh]:[mm], ±[hh][mm], or ±[hh].

Nhưng lưu ý rằng, + 0X: 00 là chính xác và + 0X00 không chính xác cho việc sử dụng mở rộng. Vì vậy, tốt hơn là sử dụng date("c"). Một cuộc thảo luận tương tự ở đây .

34 hữu ích 5 bình luận chia sẻ

answer

2

Cách chuyển đổi từ ISO 8601 sang unixtimestamp:

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

Cách chuyển đổi từ unixtimestamp sang ISO 8601 (máy chủ múi giờ):

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

Cách chuyển đổi từ unixtimestamp sang ISO 8601 (GMT):

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

Cách chuyển đổi từ unixtimestamp sang ISO 8601 (múi giờ tùy chỉnh):

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00

2 hữu ích 0 bình luận chia sẻ

answer

0

Nếu bạn thử đặt một giá trị trong datetime-local

date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));

//output : 2010-12-30T23:21

0 hữu ích 1 bình luận chia sẻ

answer

4

date("c");

//output : 2018-02-28T13:12:44+01:00

4 hữu ích 2 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm