【发布时间】:2019-03-31 11:28:43
【问题描述】:
所以我们有一个如下所示的 json 响应:
{
data: {
nestedData: {
someMoreNestedData: {
someArray: [
{
someWhereThereIsADate: '2018-10-26'
}
]
},
wholeBunchOfOtherData: {...}
}
}
}
目前日期格式为“yyyy-MM-dd”,但可能会更改为“yyyyMMdd”或“MM/dd/yyyy”等其他格式。
UI 现在希望显示为“MM/dd/yyyy”,但将来可能会更改为其他格式。
所以让我们创建一个这样的函数(在 typescript 中):
function dateStringFormat(dateString: string, inFormat: string, outFormat: string): string {
if (!dateString || inFormat === outFormat) {
return dateString;
}
// use luxon DateTime to convert
return DateTime.fromString(dateString, inFormat).toFormat(outFormat);
}
问题在于 dateString 和 inFormat 是紧耦合的。
我们把它分成两个函数怎么样,一个用于将 dateString 解析为 JavaScript Date。第二个函数用于格式化 JavaScript 日期。但是当 inFormat 和 outFormat 相同时,我们将无法短路转换。
另一个想法是将 JSON 响应转换为数据对象,其中将日期字符串转换为日期。但这听起来很沉重。
我想知道是否有人经历过这个并提出了一些最佳实践。
【问题讨论】:
-
时刻适合日期数据类型操作momentjs.com
-
保持这种灵活性的唯一方法是使用能够识别每种可能格式的解析器。 MomentJS 是一个很好的解决方案。此外,数据格式可以附加到每个结构中,因此客户不必猜测。
-
伙计们,我已经在使用 luxon 来处理日期格式了,就像 moment 一样。问题不在于格式化工作,而是将 json 中的后端日期简化为任何格式的 UI 日期的最佳实践
标签: javascript json angular typescript