Skip to main content

ADR012使用 Luxon.toLocaleString 和日期/时间预设值

上下文

用户所在的地区会有自己的日期阅读方式。 如果不使用他们熟悉的格式来设置日期,就会有悖于直觉,这可能会让用户更费力地思考日期是什么,甚至可能导致对日期的错误理解(例如,05/03/2021,根据用户所在的地区,这可能是 3 月 5 日或 5 月 3 日)。 目前,插件使用自定义格式来定义日期和时间,并使用toFormat方法,导致格式不一致和不熟悉。

决定

为了保持用户界面的一致性,让用户无论身处何地都能熟悉使用,我们决定使用toLocaleString和Luxon的浩繁日期和时间预设。

下面就是一个例子:

const date = new luxon.DateTime();

/* Avoid this: */
date.toFormat('yyyy LLL dd'); // 2014 Aug 06
date.toFormat('yyyy LLL dd hh:mm'); // 2014 Aug 06 12:01

/* Do this instead: */
date.toLocaleString(luxon.DateTime.DATE_MED); // US: Oct 14, 1983 | FR: 14 oct. 1983
date.toLocaleString(luxon.DateTime.DATETIME_MED); // US: Oct 14, 1983, 9:30 | FR: 14 oct. 1983 9:30

后果

  • 我们需要审核当前用户界面中显示日期/时间的位置,并更新它们以遵循此 ADR。 我们需要牢记,在审查 PR 时要遵循此 ADR,或者找到/创建一个线程规则,以便在审查过程中自动执行此操作。