所以我们有一个如下所示的json响应:
{
data: {
nestedData: {
someMoreNestedData: {
someArray: [
{
someWhereThereIsADate: '2018-10-26'
}
]
},
wholeBunchOfOtherData: {...}
}
}
}
现在日期格式为“ yyyy-MM-dd”,但可以更改为“ yyyyMMdd”或“ MM / dd / yyyy”等。
UI希望现在以“ MM / dd / yyyy”显示,但将来可能会更改为其他格式。
所以让我们创建一个这样的函数(在打字稿中):
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响应转换为将日期字符串转换为Date的数据对象。但这听起来很沉重。
我想知道是否有人经历过这个问题并提出了一些最佳实践。
答案 0 :(得分:0)
该问题被标记为Angular,但看起来您正在使用原始JS。如果它在Angular中,为什么不使用Date管道?
https://angular.io/api/common/DatePipe
{{ dateObj | date }} // output is 'Jun 15, 2015'
{{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'
{{ dateObj | date:'shortTime' }} // output is '9:43 PM'
{{ dateObj | date:'mmss' }} // output is '43:11'