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-hk/n/303537.html
微信掃一掃
支付寶掃一掃