Python - Ngày và Giờ

Xin chào, các nhà phép thuật Python tương lai! Hôm nay, chúng ta sẽ bắt đầu hành trình hấp dẫn qua thế giới ngày và giờ trong Python. Là người dạy máy tính bạn thân thiện, tôi rất vui được hướng dẫn bạn trong chuyến phiêu lưu này. Vậy hãy nắm chắc chiếc cây cơ sở của bạn (bàn phím) và bắt đầu nhé!

Python - Date & Time

Tick Intervals là gì?

Trước khi chúng ta bắt đầu làm việc với ngày và giờ, hãy hiểu một khái niệm cơ bản: tick intervals. Trong thế giới máy tính, thời gian thường được đo bằng ticks. Nhưng tick là gì đối với chúng ta?

Một tick giống như nhịp tim của máy tính của bạn. Đó là đơn vị thời gian nhỏ nhất mà đồng hồ của máy tính của bạn có thể đo được. Trong Python, chúng ta đo ticks dưới dạng số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970, lúc 00:00:00 UTC. Đây là điểm thời gian thường được gọi là "epoch."

Hãy xem cách chúng ta có thể lấy giá trị tick hiện tại:

import time

ticks = time.time()
print("Giá trị tick hiện tại:", ticks)

Nếu bạn chạy đoạn mã này, bạn sẽ thấy một con số lớn được in ra. Đó là số giây đã trôi qua kể từ epoch. Rất thú vị, phải không?

TimeTuple là gì?

Bây giờ, hãy nói về TimeTuple. Đó không phải là một bước nhảy nhảy mới (mặc dù nó có vẻ như là một!), mà là cách Python đại diện thời gian.

Một TimeTuple là một tuple chứa 9 phần tử đại diện cho các khía cạnh khác nhau của thời gian:

Index Attribute Values
0 Year (ví dụ: 2023)
1 Month 1-12
2 Day 1-31
3 Hour 0-23
4 Minute 0-59
5 Second 0-61 (60 và 61 cho các giây nhảy)
6 Weekday 0-6 (0 là Thứ Hai)
7 Day of Year 1-366
8 DST -1, 0, 1 (Cờ thời gian Định mức Động)

Đừng lo lắng nếu điều này có vẻ quá phức tạp. Chúng ta sẽ sử dụng các phần tử này trong suốt bài học của chúng ta, và bạn sẽ quen thuộc với chúng trong chốc lát!

Lấy Thời gian Hiện tại

Hãy bắt đầu với điều đơn giản: lấy thời gian hiện tại. Python làm điều này rất dễ dàng với mô-đun time:

import time

current_time = time.localtime()
print("Thời gian hiện tại:", current_time)

Khi bạn chạy đoạn mã này, bạn sẽ thấy một TimeTuple được in ra. Mỗi số tương ứng với một phần tử trong bảng chúng ta vừa thấy. Ví dụ, nếu bạn thấy time.struct_time(tm_year=2023, tm_mon=6, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=166, tm_isdst=0), điều đó có nghĩa là hiện tại là ngày 15 tháng 6 năm 2023, lúc 2:30 PM.

Lấy Thời gian Định dạng

Trong khi TimeTuples rất hữu ích cho các máy tính, chúng không rất người bạn. Hãy định dạng thời gian của chúng ta sao cho dễ đọc hơn:

import time

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("Thời gian định dạng:", formatted_time)

Điều này sẽ in ra gì đó như "2023-06-15 14:30:00". Rất tốt hơn, phải không? Các mã %Y, %m, %d, v.v., là các mã định dạng cho phép Python biết cách sắp xếp các phần tử thời gian. Nó giống như đưa Python một mẫu cho cách bạn muốn thời gian của mình trông như thế nào.

Lấy Lịch cho Một Tháng

Bây giờ, hãy leo thang và in ra một lịch đầy đủ cho một tháng. Chúng ta sẽ sử dụng mô-đun calendar cho điều này:

import calendar

year = 2023
month = 6

print(calendar.month(year, month))

Điều này sẽ in ra một lịch đẹp đẽ cho tháng 6 năm 2023. Có vẻ như bạn có một lịch nhỏ trên bàn làm việc của mình ngay trong chương trình Python của bạn!

Mô-đun time

Chúng ta đã sử dụng mô-đun time một chút, nhưng hãy khám phá nó thêm. Mô-đun này cung cấp các hàm liên quan đến thời gian khác nhau. Dưới đây là một số hàm hữu ích:

import time

print("Thời gian hiện tại tính theo giây từ epoch:", time.time())
print("Thời gian hiện tại địa phương:", time.ctime())
print("Ngủ 2 giây...")
time.sleep(2)
print("Đã thức dậy!")

Hàm sleep() rất hữu ích khi bạn muốn chương trình của mình tạm dừng một chút. Nó như là bạn đang nói với mã của mình để nghỉ ngơi một chút!

Mô-đun calendar

Chúng ta đã thấy cách in ra một tháng, nhưng mô-đun calendar có thể làm nhiều thứ hơn:

import calendar

print("Năm 2023 có phải là năm nhảy không?", calendar.isleap(2023))
print("Số năm nhảy giữa 2000 và 2050:", calendar.leapdays(2000, 2050))
print("Thứ của tuần của ngày 2023-06-15 là gì?", calendar.weekday(2023, 6, 15))

Các hàm này giúp bạn làm việc với lịch và ngày dễ dàng. Không cần phải đếm trên ngón tay để biết năm nhảy nữa!

Mô-đun datetime của Python

Mô-đun datetime giống như một cây cơ sở đa năng của việc thao tác thời gian trong Python. Nó kết hợp chức năng của cả mô-đun timecalendar và thêm nhiều tính năng hơn.

from datetime import datetime, date, time

# Ngày và giờ hiện tại
now = datetime.now()
print("Ngày và giờ hiện tại:", now)

# Tạo một ngày cụ thể
my_birthday = date(1990, 5, 15)
print("Ngày sinh nhật của tôi:", my_birthday)

# Tạo một giờ cụ thể
alarm = time(7, 30, 0)
print("Đặt báo thức lúc:", alarm)

Với datetime, bạn có thể tạo, thao tác và định dạng ngày và giờ một cách dễ dàng.

Đối tượng date của Python

Đối tượng date từ mô-đun datetime cho phép bạn làm việc với các ngày (năm, tháng và ngày):

from datetime import date

today = date.today()
print("Ngày hôm nay:", today)
print("Năm:", today.year)
print("Tháng:", today.month)
print("Ngày:", today.day)

Đó giống như có một lịch thông minh biết ngày nào là hôm nay và có thể kể cho bạn nghe về ngày đó!

Đối tượng time của Python

Tương tự, đối tượng time cho phép bạn làm việc với các giờ (giờ, phút, giây, microsecond):

from datetime import time

lunch_time = time(12, 30, 0)
print("Thời gian ăn trưa:", lunch_time)
print("Giờ:", lunch_time.hour)
print("Phút:", lunch_time.minute)
print("Giây:", lunch_time.second)

Bây giờ bạn có thể đặt chính xác thời gian để dừng lại mã của mình!

Đối tượng datetime của Python

Đối tượng datetime kết hợp datetime, cho phép bạn kiểm soát cả hai:

from datetime import datetime

now = datetime.now()
print("Ngày và giờ hiện tại:", now)
print("Năm hiện tại:", now.year)
print("Tháng hiện tại:", now.month)
print("Ngày hiện tại:", now.day)
print("Giờ hiện tại:", now.hour)
print("Phút hiện tại:", now.minute)
print("Giây hiện tại:", now.second)

Đó giống như có một chiếc đồng hồ siêu anh hùng biết tất cả về khoảnh khắc hiện tại!

Đối tượng timedelta của Python

Cuối cùng nhưng không kém phần quan trọng, hãy nói về timedelta. Đối tượng này đại diện cho một khoảng thời gian, và nó rất hữu ích cho các phép toán ngày:

from datetime import datetime, timedelta

now = datetime.now()
print("Ngày và giờ hiện tại:", now)

# Thêm 1 ngày
tomorrow = now + timedelta(days=1)
print("Ngày mai:", tomorrow)

# Trừ 1 tuần
last_week = now - timedelta(weeks=1)
print("Tuần trước:", last_week)

Với timedelta, bạn có thể du lịch thời gian trong mã của mình! Nhưng đúng là, bạn có thể dễ dàng tính toán các ngày trong tương lai và quá khứ, điều này rất hữu ích cho nhiều ứng dụng.

Và thế là, các nhà phép thuật Python tương lai! Chúng ta đã đi qua thế giới hấp dẫn của ngày và giờ trong Python. Hãy nhớ, luyện tập là chìa khóa để thành công, vì vậy đừng ngần ngại thử nghiệm các khái niệm này. Trước khi bạn biết, bạn sẽ thao tác thời gian như một chủ tịch thời gian mã huyền thoại!

Credits: Image by storyset