Hướng dẫn dùng date now trong PHP

Hàm date() sẽ xuất ra một chuỗi thời gian dựa theo định dạng được truyền vào và số nguyên timestamp.

Hướng dẫn dùng date now trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú pháp: date( $format,  $timestamp);

Trong đó:

  • $format là định dạng  thời gian mà hàm sẽ trả về.
  • $timestamp là một số nguyên Unix timestamp. nếu không truyền tham số này, nó sẽ lấy timestamp của thời điểm hiện tại.

Kết quả trả về

Hàm sẽ trả về một chuỗi thời gian đúng với định dạng $format đã truyền vào nếu chạy thành công. Nếu $timestamp truyền vào không phải là số hàm sẽ trả về FALSE và sẽ xuất ra cảnh báo.

Bài viết này được đăng tại [free tuts .net]

Ví dụ

Cách sử dụng hàm $date() lấy thời gian hiện tại.

Code

echo date("F j, Y, g:i a")."
"; echo date("m.d.y")."
"; echo date("j, n, Y")."
"; echo date("Ymd")."
"; echo date('h-i-s, j-m-y, it is w Day')."
"; echo date('\i\t \i\s \t\h\e jS \d\a\y.')."
"; echo date("D M j G:i:s T Y")."
"; echo date('H:m:s \m \i\s\ \m\o\n\t\h')."
"; echo date("H:i:s")."
"; echo date("Y-m-d H:i:s")."
";

Kết quả

May 4, 2017, 2:22 pm
05.04.17
4, 5, 2017
20170504
02-22-35, 4-05-17, 2231 2235 4 Thupm17
it is the 4th day.
Thu May 4 14:22:35 ICT 2017
14:05:35 m is month
14:22:35
2017-05-04 14:22:35

Định dạng thời gian tại một thời điểm nào đó.

Code

$date = mktime(15,50,30,4,30,2017);
echo date("F j, Y, H:i a", $date)."
"; echo date("Y-m-d H:i:s", $date)."
";

Kết quả

April 30, 2017, 15:50 pm
2017-04-30 15:50:30

Tham khảo: php.net

Hàm date() sẽ xuất ra một chuỗi thời gian dựa theo định dạng được truyền vào và số nguyên timestamp.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú pháp: date( $format,  $timestamp);

Trong đó:

  • $format là định dạng  thời gian mà hàm sẽ trả về.
  • $timestamp là một số nguyên Unix timestamp. nếu không truyền tham số này, nó sẽ lấy timestamp của thời điểm hiện tại.

Kết quả trả về

Hàm sẽ trả về một chuỗi thời gian đúng với định dạng $format đã truyền vào nếu chạy thành công. Nếu $timestamp truyền vào không phải là số hàm sẽ trả về FALSE và sẽ xuất ra cảnh báo.

Bài viết này được đăng tại [free tuts .net]

Ví dụ

Cách sử dụng hàm $date() lấy thời gian hiện tại.

Code

echo date("F j, Y, g:i a")."
"; echo date("m.d.y")."
"; echo date("j, n, Y")."
"; echo date("Ymd")."
"; echo date('h-i-s, j-m-y, it is w Day')."
"; echo date('\i\t \i\s \t\h\e jS \d\a\y.')."
"; echo date("D M j G:i:s T Y")."
"; echo date('H:m:s \m \i\s\ \m\o\n\t\h')."
"; echo date("H:i:s")."
"; echo date("Y-m-d H:i:s")."
";

Kết quả

May 4, 2017, 2:22 pm
05.04.17
4, 5, 2017
20170504
02-22-35, 4-05-17, 2231 2235 4 Thupm17
it is the 4th day.
Thu May 4 14:22:35 ICT 2017
14:05:35 m is month
14:22:35
2017-05-04 14:22:35

Định dạng thời gian tại một thời điểm nào đó.

Code

$date = mktime(15,50,30,4,30,2017);
echo date("F j, Y, H:i a", $date)."
"; echo date("Y-m-d H:i:s", $date)."
";

Kết quả

April 30, 2017, 15:50 pm
2017-04-30 15:50:30

Tham khảo: php.net

Câu trả lời ngắn

$now = date_create()->format('Y-m-d H:i:s');

Đọc dưới đây để trả lời dài.




Bắt chước trong PHP

Để bắt chước NOW()chức năng MySQL trong PHP bạn có thể sử dụng date_create()->format('Y-m-d H:i:s'). Cách tiếp cận này cho phép bạn xử lý các thao tác thời gian / múi giờ dễ dàng hơn sau đó date('Y-m-d H:i:s'). Nó dễ đọc hơn và nó hoạt động kể từ php 5.2.

$now = date_create('now')->format('Y-m-d H:i:s'); // works in php 5.2 and higher  
$now = date_create()->format('Y-m-d H:i:s'); // also works in php 5.2
$now = new DateTime('now')->format('Y-m-d H:i:s'); // syntax error!!!
$now = (new DateTime('now'))->format('Y-m-d H:i:s'); // works in php 5.4 and higher   
$now = date('Y-m-d H:i:s'); // works as well, but it's less nice then date_create()

Lý do tại sao điều này hoạt động là vì chức năng MySQL NOW()cung cấp giá trị dateTime theo định dạng này : 'YYYY-MM-DD HH:MM:SS'. Xem tại đây: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-fifts.html#feft_now . Một sự thật thú vị là có thể lấy định dạng datetime bằng cách chạy truy vấn này : SHOW VARIABLES LIKE 'd%e_format', kết quả có thể giống như thế này:

Variable_name     Value     
date_format       %Y-%m-%d
datetime_format   %Y-%m-%d %H:%i:%

Các biến ở đây là các biến chỉ đọc. Vì vậy, bạn không thể thay đổi nó. Tôi đoán NOW()chức năng MySQL có định dạng từ datetime_formatbiến.


date_create () -> format () VS ngày ()

Các sự thật thuận lợi của date_create('now')->format('Y-m-d H:i:s')hơn date('Y-m-d H:i:s')là:

  • dễ dàng hơn để xử lý các thao tác thời gian
  • dễ dàng hơn để xử lý múi giờ
  • nhiều hơn

dễ dàng hơn để xử lý các thao tác thời gian

date_create()chấp nhận định dạng ngày / giờ tương đối (như now, yesterdayhoặc +1 day) xem liên kết này , ví dụ:

$tomorrow = date_create('+1 day')->format('Y-m-d H:i:s'); 

date() cũng chấp nhận một định dạng ngày / giờ tương đối, như thế này:

$tomorrow = date('Y-m-d H:i:s', strtotime('+1 day'));
$tomorrow = date('Y-m-d H:i:s', (time() + 86400)); // 86400 seconds = 1 day

dễ dàng hơn để xử lý múi giờ

Khi các múi giờ quan trọng thì việc sử dụng date_create()->format()sẽ có ý nghĩa hơn rất nhiều date()bởi vì date()sử dụng múi giờ mặc định được cấu hình trong php.inilệnh date.timezone. (liên kết: http://php.net/manual/en/datetime.configuration.php#ini.date.timezone ). Có thể thay đổi múi giờ, vd date_default_timezone_set('Asia/Tokyo');. Nhưng nhược điểm của nó là nó sẽ ảnh hưởng đến tất cả các chức năng ngày / giờ. Vấn đề này không tồn tại nếu bạn đang sử dụng date_create()->format()kết hợp với timezone_open().

PHP hỗ trợ nhiều múi giờ. Điều buồn cười là nó thậm chí còn hỗ trợ vòng Bắc Cực và Nam Cực. Bạn đã bao giờ nghe nói về Longyearbyen? Nếu không, thì đừng lo lắng, tôi cũng đã không nghe về nó 5 phút trước. Nhưng, điều tốt đẹp ở đây là PHP biết Arctic/Longyearbyen.

Xem danh sách tất cả các múi giờ được hỗ trợ: http://php.net/manual/en/timezones.php .

nhiều hơn

OOP sử dụng Đối tượng toàn trạng thái. Vì vậy, tôi thích nghĩ theo cách này:

// Create a DateTime Object. 
// Use the DateTime that applies for tomorrow.
// Give me the datetime in format 'Y-m-d H:i:s'
$tomorrow = date_create('+1 day')->format('Y-m-d H:i:s'); 

Sau đó suy nghĩ theo cách này:

// Give me a date time string in format 'Y-m-d H:i:s', 
// use strtotime() to calculate the Unix timestamp that applies for tomorrow.
$tomorrow = date('Y-m-d H:i:s', strtotime('+1 day'));

Vì vậy, tôi sẽ nói rằng date_create()->format()cách tiếp cận dễ đọc hơn đối với tôi sau đó date().


Ví dụ về date_create () -> format ()

Tôi sử dụng phương pháp này cho các dự án của mình nếu tôi phải điền vào một mảng. Như thế này:

$array = array(
    'name' => 'John',
    'date_time' => date_create('now')->format('Y-m-d H:i:s'), // uses the default timezone
    'date_time_japan' => date_create('now', timezone_open('Asia/Tokyo'))->format('Y-m-d H:i:s'),
);

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