Kelab / ChineseTimeNLP

将中文时间表达词转为相应的时间字符串,支持时间点,时间段,时间间隔。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

有沒有辦法直接回傳 timedelta datetime 或 arrow 的格式而非 dict?

r888800009 opened this issue · comments

回傳 dict 沒辦法直接導入 timedelta 等時間類型,使用上不是很方便,比方說下面這種寫法也是沒辦法直接轉成 timedelta

timedelta(**{'day': 0, 'hour': 0, 'minute': 0, 'second': 5})

python 官方的定義是都加了 s,所以如果要轉換的話需要一個個對應

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

至於判斷類別可以透過 isinstance() 比方說

isinstance(timedelta(), timedelta)

感覺這樣子使用上會比較方便?

commented

感谢!这是一个非常好的想法,之前没有考虑到这里。

有沒有辦法直接回傳 timedelta datetime 或 arrow 的格式而非 dict?

暂时的想法是 parse 函数增加一个可选参数,然后返回 timedelta 或者 arrow 格式。

{
	'type': 'timedelta',
	'timedelta': {
		'year': 0,
		'month': 0,
		'day': 3,
		'hour': 0,
		'minute': 0,
		'second': 0
	},
	'_timedelta': timedelta(),
    '_arrow': Arrow(),
}

但是这样一来又有 timedelta 中关于 year 和 month 的天数的问题,还是有待考虑。

python 官方的定義是都加了 s

可以考虑把当前的 dict 内加 s, 但是这会是一个 breaking change,近期可能不会引入,如果要确定引入的话需要等到下一个大版本。
可以先实现一个函数来帮忙做转化。

以上,这个 issue 还是有待考虑。