JavaScript ISO日期到人类可读

时间:2016-10-07 19:10:53

标签: javascript jquery

我在JS中得到2014-07-04之类的日期,而不是时间。 我想将ISO日期转换为人类可读格式。例如:July 4, 2014

3 个答案:

答案 0 :(得分:1)

您问题中2014-07-04的日期不在ISO format。 ISO格式化日期的示例是2014-07-04T18:06:08-07:00。如果我们想将其转换为July 4, 2014,一种方法是使用JavaScript的Date构造函数。

var isoformat = 2014-07-04T18:06:08-07:00;
var readable = new Date(isoformat);

变量readable现在包含字符串Fri Jul 04 2014 21:06:08 GMT-0400 (Eastern Daylight Time)。从这里开始,我们需要将月,日和年放在自己的变量中。

var m = readable.getMonth(); // returns 6
var d = readable.getDay();  // returns 15
var y = readable.getFullYear();  // returns 2012

由于月份由数字表示,我们定义一个月份数组,以便我们找到月份的名称。

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

要获取名称,我们使用m的值来定位我们想要的数组中的索引。

var mlong = months[m];

如果您还没有注意到,m比7月(m = 6对应的数字少一个,但7月是一年中的第7个月)。但这不是问题,因为数组中的第一个索引为零,这意味着months数组中的索引6等于July

我们的最后一步是将它们放在一起。

var fulldate = mlong + " " + d + ", " + y;

请参阅fiddle

答案 1 :(得分:1)

使用Intl格式化日期。 Check the MDN link for more information about Intl

const date = new Date('2014-07-04');
const dateTimeFormat = new Intl.DateTimeFormat('en', {
  year: 'numeric',
  month: 'long',
  day: 'numeric',
});
console.log(dateTimeFormat.format(date));

答案 2 :(得分:0)

function humanizeDate(date_str) {
  month = ['January', 'Feburary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

  date_arr = date_str.split('-');
  
  return month[Number(date_arr[1]) - 1] + " " + Number(date_arr[2]) + ", " + date_arr[0]
}

date_str = '2014-07-04';

console.log(humanizeDate(date_str));