给定部分日期时间解析日期时间范围或持续时间
Parse datetime-range or duration given a partial datetime
假设我得到了部分日期时间字符串。我想获得它代表的日期时间,以及给定日期时间的分辨率是多少。
例如:
"2021-01-06 12"
-> 2021-01-06 12:00:00.000000
和 "hour"
"2020-03"
-> 2020-03-01 00:00:00.000000
和 "month"
"2020-03-01"
-> 2020-03-01 00:00:00.000000
和 "day"
想法是使用给定的部分日期时间字符串作为时间范围规范。意思是不写"All of March, 2020"
,只写"2020-03"
.
这个问题可以通过 pandas
框架简化为一个答案,尽管在上面的例子中给定了一个部分字符串,pd.Timestamp(...)
解析得很好(例如 pd.Timestamp("2020-03") == pd.Timestamp('2020-03-01 00:00:00.000000')
)。
提前致谢!
EDIT:看来内部函数pandas._libs.tslibs.parsing.parse_datetime_string_with_reso
returns是我想要的。有谁知道我如何访问它(无法使用 from pandas._libs.tslibs.parsing import parse_datetime_string_with_reso
访问)?
dateutil
有一个很好的解析器,允许输入字符串有缺失的部分:
from dateutil import parser
dates = ["2021-01-06 12", "2020-03", "2020-03-01"]
for date in dates:
if len(date.split('-')) <= 2:
# If day is missing, resulting day will be the same as
# the current day of month instead of '01'.
date += '-01'
parsed = parser.parse(date)
print(parsed)
输出:
2021-01-06 12:00:00
2020-03-01 00:00:00
2020-03-01 00:00:00
你可以试试这个https://pypi.org/project/datefinder/
用于在字符串中定位日期的 python 模块。
具体解决问题的这一部分:
EDIT: It seems that the internal function pandas._libs.tslibs.parsing.parse_datetime_string_with_reso returns what I want. Does anyone know how can I access it (not accessible using from pandas._libs.tslibs.parsing import parse_datetime_string_with_reso)?
您可以使用 from pandas._libs.tslibs.parsing import parse_time_string
内部调用 parse_datetime_string_with_reso
和 returns 分辨率。
假设我得到了部分日期时间字符串。我想获得它代表的日期时间,以及给定日期时间的分辨率是多少。
例如:
"2021-01-06 12"
->2021-01-06 12:00:00.000000
和"hour"
"2020-03"
->2020-03-01 00:00:00.000000
和"month"
"2020-03-01"
->2020-03-01 00:00:00.000000
和"day"
想法是使用给定的部分日期时间字符串作为时间范围规范。意思是不写"All of March, 2020"
,只写"2020-03"
.
这个问题可以通过 pandas
框架简化为一个答案,尽管在上面的例子中给定了一个部分字符串,pd.Timestamp(...)
解析得很好(例如 pd.Timestamp("2020-03") == pd.Timestamp('2020-03-01 00:00:00.000000')
)。
提前致谢!
EDIT:看来内部函数pandas._libs.tslibs.parsing.parse_datetime_string_with_reso
returns是我想要的。有谁知道我如何访问它(无法使用 from pandas._libs.tslibs.parsing import parse_datetime_string_with_reso
访问)?
dateutil
有一个很好的解析器,允许输入字符串有缺失的部分:
from dateutil import parser
dates = ["2021-01-06 12", "2020-03", "2020-03-01"]
for date in dates:
if len(date.split('-')) <= 2:
# If day is missing, resulting day will be the same as
# the current day of month instead of '01'.
date += '-01'
parsed = parser.parse(date)
print(parsed)
输出:
2021-01-06 12:00:00
2020-03-01 00:00:00
2020-03-01 00:00:00
你可以试试这个https://pypi.org/project/datefinder/ 用于在字符串中定位日期的 python 模块。
具体解决问题的这一部分:
EDIT: It seems that the internal function pandas._libs.tslibs.parsing.parse_datetime_string_with_reso returns what I want. Does anyone know how can I access it (not accessible using from pandas._libs.tslibs.parsing import parse_datetime_string_with_reso)?
您可以使用 from pandas._libs.tslibs.parsing import parse_time_string
内部调用 parse_datetime_string_with_reso
和 returns 分辨率。