Python是一種功能強大的編程語言,在很多領域都有廣泛的應用。其中,處理日期和時間也是常見的。Python內置的datetime模塊提供了許多處理日期和時間的函數和類,可以靈活地創建、操作日期和時間。本文將從以下幾個方面詳細討論如何使用Python來處理日期和時間。
一、日期和時間的格式化
1、使用datetime.strftime(format)方法可以將一個datetime對象轉化為字符串,其中format是一個用於定義日期和時間格式的字符串。
from datetime import datetime now = datetime.now() print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2021-06-07 08:45:12
2、strftime()方法中常用的格式化模式如下:
代碼 | 含義 |
%a | 星期幾的簡寫 |
%A | 星期幾的全名 |
%b | 月份的簡寫 |
%B | 月份的全名 |
%c | 日期和時間的字符串表示 |
%d | 日,表示為01-31 |
%H | 小時,24小時制,表示為00-23 |
%I | 小時,12小時制,表示為01-12 |
%j | 一年中的第幾天,表示為001-366 |
%m | 月份,表示為01-12 |
%M | 分鐘,表示為00-59 |
%p | 上午或下午的符號 |
%S | 秒,表示為00-59 |
%U | 一年中的第幾周,周日為一周的開始,表示為00-53 |
%w | 星期幾的數字表示,周日為0,周六為6 |
%W | 一年中的第幾周,周一為一周的開始,表示為00-53 |
%x | 日期的字符串表示 |
%X | 時間的字符串表示 |
%y | 去掉世紀的年份,表示為00-99 |
%Y | 帶有世紀的年份 |
%z | UTC時區偏移量,形如+HHMM或-HHMM |
%Z | 時區名稱 |
%% | 表示字符“%” |
3、使用strptime(date_string, format)方法可以將一個字符串轉化為datetime對象,其中date_string是一個符合指定格式的日期字符串。
from datetime import datetime date_string = "2021-06-07 08:45:12" date_time = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S") print(date_time) # 2021-06-07 08:45:12
二、日期和時間的加減
1、使用timedelta對象可以對日期和時間進行加減操作。
from datetime import datetime, timedelta now = datetime.now() print(now + timedelta(days=1)) # 明天的這個時間 print(now - timedelta(hours=2)) # 兩小時前的這個時間
2、timedelta常用的參數如下:
參數 | 含義 |
days | 天數 |
hours | 小時數 |
minutes | 分鐘數 |
seconds | 秒數 |
microseconds | 微秒數 |
milliseconds | 毫秒數 |
weeks | 周數 |
三、時區和夏令時
1、使用pytz模塊可以處理時區和夏令時。
from datetime import datetime import pytz dt = datetime(2021, 6, 7, 8, 45, 12, tzinfo=pytz.timezone("Asia/Shanghai")) print(dt) # 2021-06-07 08:45:12+08:00 tz = pytz.timezone("America/New_York") dt_newyork = datetime.now(tz) print(dt_newyork) # 2021-06-06 20:48:20.689997-04:00
2、pytz內置了很多時區,可以使用pytz.all_timezones查看。
import pytz print(pytz.all_timezones)
四、計算時間差
1、使用datetime對象的減法可以計算時間差。
from datetime import datetime, timedelta start_time = datetime(2021, 6, 1, 8, 0, 0) end_time = datetime(2021, 6, 7, 8, 45, 12) time_diff = end_time - start_time print(time_diff) # 6 days, 0:45:12
2、輸出時間差的總秒數。
print(time_diff.total_seconds()) # 521712.0
五、生成日期和時間序列
1、使用pandas模塊的date_range()方法可以生成指定時間段的日期序列。
import pandas as pd dates = pd.date_range(start='2021-06-01', end='2021-06-07') print(dates)
2、使用pandas模塊的date_range()方法可以生成指定時間段、固定頻率的時間序列。
import pandas as pd timestamps = pd.date_range("2021-06-07", periods=10, freq="H") print(timestamps)
3、常用的時間頻率如下:
代碼 | 含義 |
B | 每工作日 |
C | 自定義工作日 |
D | 每自然日 |
H | 每小時 |
T | 每分鐘 |
S | 每秒 |
L | 每毫秒 |
U | 每微秒 |
六、總結
以上是本文對Python中處理日期和時間的完整指南的詳細討論。掌握這些日期和時間的處理方法,可以在實際工作和項目中更加方便地處理和分析時間序列數據。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303537.html