将数字日期转换为文本格式的最佳方法

时间:2018-05-20 20:06:16

标签: javascript

我正在从外部API检索数据,我收到的日期信息格式为'2018-05-06',在没有年份的情况下将其转换为'May 6'的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

这里有几个选项,各有利弊。

Moment.js

这是一个非常简单的解决方案,如果您已经拥有依赖关系,那么这是一个很好的解决方案。

const date = moment('2018-05-06').format('MMMM D');

赞成

  • 简单
  • 清洁
  • 易于阅读
  • 让您知道日期是否无效(如2018-05-32
  • 如果您的格式需要更改,则它具有复杂的格式化程序
  • 易于支持其他语言/区域设置

缺点

  • 可能不必要的额外依赖
  • 如果您不想验证日期,可能会出现问题

Javascript Date

const MONTHS = ['January', 'February', ...];
const date = new Date('2018-05-06');
const myString = MONTHS[date.getMonth()] + ' ' + date.getDate();

赞成

  • 与Moment.js相同的专业人士,除语言处理外
  • 没有外部依赖

缺点

  • 如果您不需要验证且性能非常敏感,可能会出现问题
  • 稍微尴尬需要存储自己的月份表示

手动解析

参见Mihai的回答

赞成

  • 可以是高性能

缺点

  • 代码可能非常特定于此要求,如果事情变得更加复杂,则不容易改变
  • 无日期验证

答案 1 :(得分:1)

您可以创建months数组并使用split方法查找



let months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], date = '2018-05-06';
let [_, month, day] = date.split('-');
console.log(`${months[month - 1]} ${ + day}`);