首页 > 解决方案 > 如何从 ISO 字符串 javascript 中获取日期

问题描述

我有一个从服务器返回的 ISO 日期,在将其发送到前端之前,我想将 ISO 日期转换为类似这样的日期

2011-10-05T14:48:00.000Z

time: {
          day: 'Tue',
          hour: '11:54 AM',
          date: 'May 5, 2019'
        }

我不想使用一堆正则表达式,除非我必须这样做,我希望我可以用 .toDateString() 等函数来实现这一点......是否有 toDateDayString 或类似的东西?

这是将信息发送回我的前端的实际功能的片段。

我希望能够从 .then() 中的承诺中实现这一内联

allMessages = [] 

await subClient.conversations.services(convoServiceSid)
           .conversations(convo)
           .messages
           .list({limit: 20})
           .then(messages => messages.forEach(m =>
 allMessages.push({"messagesId": m.conversationSid, "time": m.dateCreated.toDateString() }) ));
//m.dateCreated is always going to be an ISO string, I want to make an object with day, hour, date if possible

res.json(allMessages)

标签: javascriptnode.js

解决方案


您可以使用toLocaleDateString方法

function get_time(iso_date_str) {
  const [day, month_date, year, hour] = (
    new Date(iso_date_str).toLocaleDateString('en', {
      weekday: 'short',
      hour: 'numeric',
      minute: 'numeric',
      month: 'short',
      day: 'numeric',
      year: 'numeric',
    })
    .split(/,\s?/)
  );
  return {
    day,
    hour,
    date: month_date + ', ' + year
  };
}

console.log(get_time('2011-10-05T14:48:00.000Z'));


推荐阅读