绕过日期时间ValueError异常以获取用于日期转换的日期时间

问题描述 投票:0回答:1

我需要将 jalali 日历转换为日期时间列,因为在其他表中我需要一个日期列而不是字符串。

列中的字符串值可能如下所示

from datetime import datetime
dt=datetime.strptime("1403-02-31","%Y-%m-%d")

但它给出以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\bazargani.mehdi\AppData\Local\Programs\Python\Python312\Lib\_strptime.py", line 554, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bazargani.mehdi\AppData\Local\Programs\Python\Python312\Lib\_strptime.py", line 520, in _strptime
    julian = datetime_date(year, month, day).toordinal() - \
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: day is out of range for month

很明显,因为二月没有 31 天,但我需要进行上述转换。

有没有办法绕过 python datetime 中的上述错误?

python python-3.x datetime
1个回答
0
投票

您需要使用

jdatetime

import jdatetime
from datetime import datetime

jalali_date_str = "1403-02-31"

try:
    jalali_date = jdatetime.date(*map(int, jalali_date_str.split('-')))
    gregorian_date = jalali_date.togregorian()
    dt = datetime(gregorian_date.year, gregorian_date.month, gregorian_date.day)
    print(dt)
except ValueError as e:
    print(f"Error converting date: {e}")

返回

2024-05-20 00:00:00
© www.soinside.com 2019 - 2024. All rights reserved.