Python - 日期和時間

大家好,未來的Python巫師們!今天,我們將要走進Python日期和時間的奇幻世界。作為你友善的鄰居電腦老師,我非常高興能夠引導你們進行這次冒險。所以,拿起你的虛擬魔杖(鍵盤),我們一起深入探險吧!

Python - Date & Time

什么是紀元刻度?

在我們開始操作日期和時間之前,讓我們先了解一個基本概念:紀元刻度。在電腦的世界中,時間常常是以刻度來計量的。但刻度究竟是什麼呢?

紀元刻度就像是你的電腦的心跳。它是你的電腦時鐘可以測量的最小時間單位。在Python中,我們將紀元刻度定義為自1970年1月1日00:00:00 UTC以來經過的秒數。這個時間點通常被稱為"紀元"。

我們來看看如何獲取當前的紀元刻度值:

import time

ticks = time.time()
print("當前紀元刻度值:", ticks)

如果你執行這段代碼,你會看到一個很大的數字被打印出來。這就是自紀元以來經過的秒數。相當酷對吧?

什麼是TimeTuple?

現在,讓我們來談談TimeTuple。這不是一種新的舞蹈(雖然它聽起來像是!),而是Python表示時間的一種方式。

TimeTuple是一個包含9個元素的元組,它們代表時間的不同方面:

索引 屬性
0 (例如,2023)
1 1-12
2 1-31
3 0-23
4 0-59
5 0-61 (60和61為閏秒)
6 週末日 0-6 (0為星期一)
7 年中日 1-366
8 暑假 -1, 0, 1 (夏日節能時間旗標)

別擔心,如果這些看起來令人生畏。我們會在這堂課中經常使用這些元素,你會很快熟悉它們的!

獲取當前時間

讓我們從一些簡單的事情開始:獲取當前時間。Python有個非常容易的方法可以做到這一點,那就是使用time模塊:

import time

current_time = time.localtime()
print("當前時間:", current_time)

當你運行這個時,你會看到一個TimeTuple被打印出來。每個數字對應我們剛才看到的表格中的一個元素。例如,如果你看到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),那就表示現在是2023年6月15日下午2:30。

獲取格式化的時間

雖然TimeTuples對電腦很有用,但它們對人來說不太友好。讓我們以一種更容易閱讀的方式格式化我們的時間:

import time

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("格式化時間:", formatted_time)

這將打印出像"2023-06-15 14:30:00"這樣的東西。好多了吧?%Y%m%d等是格式代碼,它們告訴Python如何安排時間元素。這就像給Python一個模板,告訴它你希望你的時間看起來是什麼樣子。

獲取一個月的日曆

現在,讓我們加大力度,打印出一個月的整個日曆。我們將使用calendar模塊來做到這一點:

import calendar

year = 2023
month = 6

print(calendar.month(year, month))

這將打印出2023年6月的精美格式化日曆。這就像在你的Python程序中有一個迷你桌面日曆一樣!

time模塊

我們已經使用了time模塊,但讓我們進一步探索它。這個模塊提供了各種與時間相關的函數。以下是一些有用的函數:

import time

print("自紀元以來的當前時間(秒):", time.time())
print("當前本地時間:", time.ctime())
print("休眠2秒...")
time.sleep(2)
print("醒來!")

sleep()函數在你想讓你的程序暫停一段時間時特別有用。這就像告訴你的代碼要稍作休息一樣!

calendar模塊

我們已經看到了如何打印一個月,但calendar模塊能做的還有很多:

import calendar

print("2023年是閏年嗎?", calendar.isleap(2023))
print("2000年到2050年之間有多少閏年?", calendar.leapdays(2000, 2050))
print("2023年6月15日是星期幾?", calendar.weekday(2023, 6, 15))

這些函數幫助你輕鬆地處理日曆和日期。再也沒有用手指計算閏年的困擾了!

Python datetime模塊

datetime模塊就像是Python中時間操作的多功能軍刀。它結合了timecalendar模塊的功能,並添加了更多特點。

from datetime import datetime, date, time

# 當前日期和時間
now = datetime.now()
print("當前日期和時間:", now)

# 創建特定日期
my_birthday = date(1990, 5, 15)
print("我的生日:", my_birthday)

# 創建特定時間
alarm = time(7, 30, 0)
print("鬧鐘設定為:", alarm)

使用datetime,你可以輕鬆地創建、操作和格式化日期和時間。

Python date對象

datetime模塊中的date對象讓你可以處理日期(年、月、日):

from datetime import date

today = date.today()
print("今天的日期:", today)
print("年:", today.year)
print("月:", today.month)
print("日:", today.day)

這就像擁有一個智能日曆,知道今天是什麼日子,並能告訴你所有有關它的信息!

Python time對象

同樣地,time對象讓你可以處理時間(時、分、秒、微秒):

from datetime import time

lunch_time = time(12, 30, 0)
print("午餐時間:", lunch_time)
print("時:", lunch_time.hour)
print("分:", lunch_time.minute)
print("秒:", lunch_time.second)

現在你可以精確地安排你的編碼休息時間了!

Python datetime對象

datetime對象結合了datetime,讓你完全控制 both:

from datetime import datetime

now = datetime.now()
print("當前日期和時間:", now)
print("當前年:", now.year)
print("當前月:", now.month)
print("當前日:", now.day)
print("當前時:", now.hour)
print("當前分:", now.minute)
print("當前秒:", now.second)

這就像擁有一個超級手錶,知道當前瞬間的所有信息!

Python timedelta對象

最後但並非最不重要,讓我們來談談timedelta。這個對象表示一段時間的持續時間,它對日期算術非常有用:

from datetime import datetime, timedelta

now = datetime.now()
print("當前日期和時間:", now)

# 加1天
tomorrow = now + timedelta(days=1)
print("明天的這個時間:", tomorrow)

# 減1周
last_week = now - timedelta(weeks=1)
print("上一周的這個時間:", last_week)

有了timedelta,你可以在你的代碼中進行時間旅行!好吧,有點像。你可以輕鬆地計算未來和過去的日期,這對許多應用程序都非常方便。

就這樣,我的年輕Python巫師們!我們已經走過了Python日期和時間的奇妙世界。記住,練習成就完美,所以不要猶豫去實驗這些概念。在你意識到之前,你將能夠像真正的編碼時間領主一樣操縱時間!

Credits: Image by storyset