การเรียนรู้ Python อาจเป็นพื้นที่เงียบๆ ที่ทุกอย่างสมเหตุสมผลจริงๆ ให้ผมพาคุณไปดูบางอย่างที่ใช้งานได้จริงสุดๆ ซึ่งคุณจะได้ใช้ตลอดเวลา: การหาจุดเริ่มต้นและจุดสิ้นสุดของวันใน Python เชื่อผมเถอะว่าสิ่งนี้ถูกใช้บ่อยกว่าที่คุณคิดมาก
เมื่อคุณกำลังสร้างแอปพลิเคชันจริงจัง ไม่ว่าจะเป็นสคริปต์ง่ายๆ สำหรับจัดระเบียบไฟล์เพลงของคุณ หรือโปรแกรมที่ใหญ่กว่านั้น คุณจะต้องทำงานกับวันที่และเวลาอยู่ตลอดเวลา บางทีคุณอาจต้องการค้นหาบันทึกทั้งหมดจากวันนี้ หรือคำนวณว่าคุณเขียนโค้ดมานานแค่ไหนแล้ว (สปอยล์: น่าจะนานเกินไป)
เครื่องมือที่คุณจะได้ใช้จริง
Python มีโมดูลในตัวที่ชื่อว่า datetime
ซึ่งจัดการเรื่องเวลาทั้งหมด มันเหมือนกับการมีมีดพับ Swiss Army ที่ดีมากๆ แทนที่จะต้องมาคำนวณทุกอย่างด้วยมือ
from datetime import datetime, date, time
วิธีการหาจุดเริ่มต้นของวันนี้
นี่คือวิธีที่ตรงไปตรงมาที่สุดในการหาเที่ยงคืนซึ่งเป็นจุดเริ่มต้นของวันนี้:
from datetime import datetime, date, time
# Get today's date
today = date.today()
print(f"Today is: {today}")
# Combine it with midnight (00:00:00)
start_of_day = datetime.combine(today, time.min)
print(f"Start of day: {start_of_day}")
เมื่อคุณรันโค้ดนี้ คุณจะเห็นผลลัพธ์ประมาณนี้:
Today is: 2024-01-15
Start of day: 2024-01-15 00:00:00
วิธีการหาจุดสิ้นสุดของวันนี้
สำหรับจุดสิ้นสุดของวัน คุณต้องการเวลา 23:59:59.999999 ซึ่งก็คือใกล้เที่ยงคืนของวันพรุ่งนี้มากที่สุดเท่าที่จะเป็นไปได้ โดยที่ยังไม่ถึงวันพรุ่งนี้จริงๆ:
from datetime import datetime, date, time
today = date.today()
end_of_day = datetime.combine(today, time.max)
print(f"End of day: {end_of_day}")
ซึ่งจะได้ผลลัพธ์แบบนี้:
End of day: 2024-01-15 23:59:59.999999
ตัวอย่างที่ใช้งานได้จริงมากขึ้น ซึ่งคุณจะได้ใช้จริงๆ
สมมติว่าคุณกำลังสร้างบางอย่างเพื่อติดตามช่วงเวลาที่คุณเขียนโค้ด (เพราะเอาจริงๆ เวลาผ่านไปเร็วมากเมื่อคุณกำลังโฟกัส):
from datetime import datetime, date, time
def get_day_boundaries(target_date=None):
"""
Get the start and end of a day.
If no date is provided, uses today.
"""
if target_date is None:
target_date = date.today()
start_of_day = datetime.combine(target_date, time.min)
end_of_day = datetime.combine(target_date, time.max)
return start_of_day, end_of_day
# For today
start, end = get_day_boundaries()
print(f"Today starts at: {start}")
print(f"Today ends at: {end}")
# For a specific date
from datetime import date
specific_date = date(2024, 12, 25) # Christmas
start, end = get_day_boundaries(specific_date)
print(f"Christmas starts at: {start}")
print(f"Christmas ends at: {end}")
เมื่อคุณทำงานกับเขตเวลา
หากคุณต้องจัดการกับเขตเวลา (ซึ่งคุณน่าจะได้ทำในที่สุด) คุณจะต้องใช้ไลบรารี pytz
หรือโมดูล zoneinfo
ที่ใหม่กว่า นี่คือวิธีที่ทันสมัย:
from datetime import datetime, date, time
from zoneinfo import ZoneInfo
# Get start of day in a specific timezone
today = date.today()
timezone = ZoneInfo("America/Chicago") # Central Time
start_of_day = datetime.combine(today, time.min, timezone)
end_of_day = datetime.combine(today, time.max, timezone)
print(f"Start of day in Central Time: {start_of_day}")
print(f"End of day in Central Time: {end_of_day}")
สถานการณ์จริงบางอย่างที่สิ่งนี้มีความสำคัญ
การวิเคราะห์ Log: "แสดงข้อผิดพลาดทั้งหมดจากวันนี้ให้ฉันดูหน่อย"
# Filter logs between start and end of day
today_start, today_end = get_day_boundaries()
todays_errors = [log for log in error_logs
if today_start <= log.timestamp <= today_end]
การประมวลผลข้อมูล: "ประมวลผลไฟล์ทั้งหมดที่สร้างขึ้นวันนี้"
import os
from datetime import datetime
today_start, today_end = get_day_boundaries()
for filename in os.listdir('/path/to/files'):
file_time = datetime.fromtimestamp(os.path.getctime(filename))
if today_start <= file_time <= today_end:
process_file(filename)
อย่าคิดมากเกินไป
ฟังนะ ผมรู้ว่ามันอาจดูเหมือนมีเป็นล้านวิธีในการทำสิ่งเหล่านี้ และจริงๆ แล้วก็เป็นอย่างนั้นแหละ แต่ให้เริ่มต้นด้วยพื้นฐานเหล่านี้ก่อน พวกมันจะครอบคลุม 90% ของสิ่งที่คุณต้องการ และเมื่อคุณเจอเคสพิเศษ คุณก็จะมีพื้นฐานที่แข็งแกร่งพอที่จะต่อยอดได้
สิ่งสำคัญคือคุณกำลังเรียนรู้และสร้างสรรค์สิ่งต่างๆ แม้ว่าสิ่งอื่นๆ จะรู้สึกไม่มั่นคงก็ตาม โค้ดไม่ตัดสินคุณ ไม่ตะโกนใส่ และถ้าคุณทำอะไรพัง คุณก็ซ่อมมันได้เสมอ
ทำต่อไปเรื่อยๆ และจำไว้ว่า - ผู้เชี่ยวชาญทุกคนเคยเป็นผู้เริ่มต้นที่รู้สึกหลงทางโดยสิ้นเชิง คุณกำลังทำได้ดีแล้ว
ข้อมูลอ้างอิงฉบับย่อสำหรับคัดลอกและวาง
from datetime import datetime, date, time
# Today's boundaries
today = date.today()
start_of_day = datetime.combine(today, time.min)
end_of_day = datetime.combine(today, time.max)
# Print them out
print(f"Day starts: {start_of_day}")
print(f"Day ends: {end_of_day}")
ทีนี้ก็ไปสร้างสรรค์อะไรเจ๋งๆ ด้วยมันเลย!
ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณ เพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด ใช่ไหม?
Apidog ตอบสนองทุกความต้องการของคุณ และ แทนที่ Postman ในราคาที่เข้าถึงได้มากกว่ามาก!