Re: [問題] datetime模組能抓民國年嗎?
※ 引述《LukeSkywaker (路克天醒者)》之銘言:
: 板上的各位大神們好
: 請問datetime模組能抓民國年嗎?
: 例如:
: from datetime import datetime
: today = '109/05/07'
: print(datetime.strptime(today, '%Y/%m/%d'))
: 便會出現ValueError: time data '109/05/07' does not match format '%Y/%m/%d'
: 但如果是'2020/05/07'就變正常了
: 先前都是用西元沒遇過這問題
: 想請問大家都是怎麼抓民國年?
: 還是只能抓出109+1911換算西元嗎?
: 謝謝大家
試了很久,不知道如何用繼承的方式,重寫 Python 的 datetime 模組,
所以嘗試修改「_strptime.py」,加入能夠抓取「民國年」的功能。
功能:
'T',表示民國年,可以輸入1至3個位數的數字。
修改內容如下:
'Y': r"(?P<Y>\d\d\d\d)",
#上面,可以考慮改成「r"(?P<Y>d{1,4})"」,放寬它的格式限制。
#增加的支援民國年的程式碼。
#民國年__?P<T>__ for groupdict
'T': r"(?P<T>\d{1,3})",
#民國年功能結束行 ===============================
'z': r"(?P<z>[+-]\d\d[0-5]\d)",
……
elif group_key == 'Y':
year = int(found_dict['Y'])
#增加的支援民國年的程式碼。
#民國年 ===============================
elif group_key == 'T': #__?P<T>__ for groupdict
year = int(found_dict['T'])
year += 1911 #加1911年,參考兩位數格式
#民國年功能結束行 ===============================
elif group_key == 'G':
iso_year = int(found_dict['G'])
舉例:
from datetime import datetime
today = '109/06/12'
print(datetime.strptime(today, '%T/%m/%d'))
另外,技術手冊有記載,還要留意年份僅能支援「1970到2038,或更廣範圍」。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.32.131 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1590044449.A.F23.html
→
05/21 21:53,
5年前
, 1F
05/21 21:53, 1F
→
05/21 21:56,
5年前
, 2F
05/21 21:56, 2F
推
05/23 17:14,
5年前
, 3F
05/23 17:14, 3F
→
05/23 17:14,
5年前
, 4F
05/23 17:14, 4F
→
05/23 17:16,
5年前
, 5F
05/23 17:16, 5F
→
05/23 17:51,
5年前
, 6F
05/23 17:51, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章