# PHP - Ngày và Giờ: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn đang học lập trình PHP! Hôm nay, chúng ta sẽ cùng khám phá thế giới kỳ diệu của ngày và giờ trong PHP. Là người thầy thân thiện trong lĩnh vực máy tính, tôi ở đây để hướng dẫn các bạn qua hành trình này với những giải thích rõ ràng, nhiều ví dụ và có lẽ cả một两句 joke nữa. Vậy, hãy chuẩn bị lịch của bạn, và chúng ta cùng bắt đầu nhé!

## Hiểu rõ tầm quan trọng của Ngày và Giờ trong Lập trình

Trước khi chúng ta đi vào chi tiết, hãy để tôi kể một câu chuyện nhanh. Khi tôi bắt đầu dạy PHP, tôi có một học sinh đã xây dựng một ứng dụng blog rất đẹp. Mọi thứ hoạt động hoàn hảo, ngoại trừ một chi tiết nhỏ - tất cả các bài viết đều hiển thị cùng một timestamp! Hóa ra, việc xử lý ngày và giờ rất quan trọng trong nhiều ứng dụng, từ hệ thống lập lịch đến các nền tảng mạng xã hội. Đó là lý do tại sao việc thành thạo các hàm ngày và giờ trong PHP lại quan trọng như vậy.

## Lấy Timestamp với hàm time()

Hãy bắt đầu từ những điều cơ bản. Trong PHP, chúng ta thường làm việc với một thứ gọi là "timestamp". Hãy tưởng tượng nó như một con số lớn đại diện cho một thời điểm cụ thể. Hàm `time()` là công cụ hàng đầu của chúng ta để lấy timestamp hiện tại.

### Ví dụ 1: Sử dụng time()

```php
<?php
$current_timestamp = time();
echo "Timestamp hiện tại là: " . $current_timestamp;
?>

Nếu bạn chạy đoạn mã này, bạn sẽ thấy điều gì đó như sau:

PHP - Date & Time

Timestamp hiện tại là: 1623456789

Bây giờ, tôi biết bạn đang nghĩ gì: "Đó chỉ là một con số lớn! Nó có ích như thế nào?" Đúng vậy, bạn thân mến, con số đó đại diện cho số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 (còn được gọi là "Unix Epoch"). Nó có thể không đẹp mắt, nhưng nó rất hữu ích cho các phép toán và so sánh.

Chuyển đổi một Timestamp với getdate()

Được rồi, chúng ta đã có timestamp, nhưng làm thế nào để chuyển đổi nó thành thứ mà con người có thể đọc được? Đó là lúc getdate() xuất hiện, công cụ chuyển đổi thời gian của chúng ta!

Ví dụ 2: Sử dụng getdate()

<?php
$current_timestamp = time();
$date_array = getdate($current_timestamp);
print_r($date_array);
?>

Điều này sẽ выводить что-то вроде:

Array
(
    [seconds] => 30
    [minutes] => 46
    [hours] => 14
    [mday] => 12
    [wday] => 6
    [mon] => 6
    [year] => 2023
    [yday] => 162
    [weekday] => Saturday
    [month] => June
    [0] => 1623456789
)

Wow, đó là rất nhiều thông tin! getdate() lấy timestamp của chúng ta và phân chia nó thành một mảng với tất cả các loại thông tin hữu ích. Nó giống như mở một hộp kẹo hỗn hợp - có thứ gì đó cho mọi người!

Sử dụng getdate() theo cách dễ đọc hơn

Hãy làm cho thông tin này dễ hiểu hơn một chút:

<?php
$current_timestamp = time();
$date_array = getdate($current_timestamp);
echo "Hôm nay là " . $date_array['weekday'] . ", " . $date_array['month'] . " " . $date_array['mday'] . ", " . $date_array['year'];
?>

Điều này sẽ выводить:

Hôm nay là Saturday, June 12, 2023

Tuyệt vời hơn phải không? Bây giờ chúng ta đang nói chuyện với con người!

Chuyển đổi một Timestamp với date()

Trong khi getdate() rất tốt, đôi khi chúng ta muốn có nhiều kiểm soát hơn đối với cách ngày và giờ của chúng ta được định dạng. Đó là lúc hàm date() phát huy tác dụng. Nó giống như một cây kéo đa năng cho việc định dạng thời gian!

Ví dụ 3: Sử dụng date() cơ bản

<?php
$current_timestamp = time();
echo date("Y-m-d H:i:s", $current_timestamp);
?>

Điều này sẽ output điều gì đó như sau:

2023-06-12 14:46:30

Phép màu ở đây là trong chuỗi định dạng "Y-m-d H:i:s". Mỗi chữ cái đại diện cho một phần khác nhau của ngày hoặc giờ. Nó giống như một mật mã, nhưng đừng lo lắng, tôi sẽ tiết lộ bí mật cho bạn!

Các ký tự định dạng thông thường của date()

Dưới đây là bảng các ký tự định dạng phổ biến:

Ký tự Mô tả Ví dụ
Y Năm bốn chữ số 2023
m Tháng (01-12) 06
d Ngày trong tháng (01-31) 12
H Giờ theo định dạng 24 giờ (00-23) 14
i Phút (00-59) 46
s Giây (00-59) 30
l Tên đầy đủ của ngày Saturday
F Tên đầy đủ của tháng June

Ví dụ 4: Sáng tạo với date()

Hãy cùng vui vẻ với việc định dạng:

<?php
$current_timestamp = time();
echo "It's " . date("l, F jS, Y \a\\t g:i A", $current_timestamp);
?>

Điều này có thể output:

It's Saturday, June 12th, 2023 at 2:46 PM

Nhìn xem! Chúng ta đã tạo ra một định dạng ngày tháng thân thiện và dễ đọc. Phần \a\\t trong chuỗi định dạng là một 'at' được escape - nó giống như nói với PHP, "Không, tôi thực sự muốn in từ 'at' này, không phải sử dụng nó như một ký tự định dạng."

Kết luận

Và thế là chúng ta đã cùng nhau hành trình qua thế giới ngày và giờ trong PHP, từ timestamp đơn giản đến các chuỗi ngày tháng được định dạng đẹp mắt. Hãy nhớ rằng, việc làm việc với ngày và giờ đều là về việc gyak. Đừng ngần ngại thử nghiệm với các định dạng và hàm khác nhau.

Trước khi tôi để bạn đi, hãy để tôi kể một câu chuyện hài về PHP date cho bạn: Tại sao lập trình viên PHP lại chia tay với người yêu của họ? Vì họ không thể tìm thấy đúng định dạng! ?

Tiếp tục lập code, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó! Đến gặp lại các bạn lần sau, đây là người thầy thân thiện của bạn trong lĩnh vực máy tính signing off.

Credits: Image by storyset