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,或者找到/创建一个线程规则,以便在审查过程中自动执行此操作。