首页 > 解决方案 > JavaScript Date 构造函数在 CMS(服务器端 JS)中返回无效日期

问题描述

我正在制作一个 React 应用程序,在其中查询 Microsoft Graph API 并获得响应日期2021-11-03T07:45:00.0000000

当我尝试将其转换为这样的 JavaScript 时Date,它给了我“无效日期”let date = new Date(dateString);

    let dateString = "2021-11-03T07:45:00.0000000"
    let date = new Date(dateString);
    let timezoneOffset = date.getTimezoneOffset();
    date.setMinutes(date.getMinutes() - timezoneOffset);
    let hours = date.getHours();
    let minutes = date.getMinutes();
    let formattedMinutes = minutes > 9 ? minutes : '0' + minutes;  
    console.log(hours + ':' + formattedMinutes); 

这正常工作,JS但问题是我使用了不支持的CMSnew Date(dateString) (服务器端 JS),因此是否可以在8:45不使用JS中的Date构造函数的情况下将日期值格式化?(库在 CMS 中工作,所以如果您有任何第三方库的解决方案,那很好。)npm

标签: javascriptreactjscontent-management-system

解决方案


在这种情况下,正则表达式可能会有所帮助。这是一个没有时区偏移的简单示例。

str = '2021-11-03T07:45:00.0000000'

const time = str.match(/[0-9]{4}-[0-9]{2}-[0-9]{2}T([0-9:]{5})/)[1]

const timeFormatted = time.split(':').map(num => parseInt(num)).reduce((timeFormatted, num) => {
  if (timeFormatted) timeFormatted += ':'
  timeFormatted += num
  return timeFormatted
})

console.log(timeFormatted)


推荐阅读