尝试使用 toordinal()
函数。公元1年1月1日的序数是1。
ordinals = [d.toordinal() for d in raw]
现在您有一个数字列表,很容易进行扩展:
def scale_num(raw, target_max, target_min, source_max, source_min):
scaled = (((raw - source_min)/(source_max - source_min))*(target_max - target_min))+target_min
return scaled
target_min = datetime.datetime(1988,1,1).toordinal()
target_max = datetime.datetime(2001,12,31).toordinal()
source_max = max(ordinals)
source_min = min(ordinals)
scaled = [round(scale_num(d, target_max, target_min, source_max, source_min)) for d in ordinals]
要将序数转换为日期,请使用date.fromordinal()
:
date = date.fromordinal(1).isoformat()