将日期字符串从json转换为UI的最佳实践

时间:2018-10-26 16:50:05

标签: javascript json angular typescript

所以我们有一个如下所示的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的数据对象。但这听起来很沉重。

我想知道是否有人经历过这个问题并提出了一些最佳实践。

1 个答案:

答案 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'