javascript - 如何从 ISO 日期字符串中获取没有破折号(-)和冒号的日期对象(:) in Javascript

标签 javascript json icalendar

我正在将 ICS 转换为 JSON,但它给了我格式为 "20190103T073640Z" 的日期,如何在 Javascript 中从此字符串获取日期对象?

我知道有很多关于“如何将 ISO 字符串转换为日期对象”的答案,但该字符串缺少破折号和冒号。

例如 当我添加破折号和冒号时,它会正确给出输出

新日期("2019-01-03T07:36:40Z");

但是如何从像这样的日期字符串中获取 javascript 中的日期对象而不使用破折号和冒号 "20190103T073640Z"??

针对认为此内容重复的人进行编辑 - 我有 ICalendar 文件,我正在使用在线转换器将其转换为 JSON,因此我使用的转换器以该格式给出日期,而该格式不是我可以直接传递给 new Date() 从中获取日期对象。那么有没有什么方法可以解析这样的“20190103T073640Z”字符串。

谢谢。

最佳答案

提取每个日期组件并使用普通构造函数创建一个新的 Date 对象怎么样?

function parseIcsDate(icsDate) {
  if (!/^[0-9]{8}T[0-9]{6}Z$/.test(icsDate))
    throw new Error("ICS Date is wrongly formatted: " + icsDate);
  
  var year   = icsDate.substr(0, 4);
  var month  = icsDate.substr(4, 2);
  var day    = icsDate.substr(6, 2);
  
  var hour   = icsDate.substr(9, 2);
  var minute = icsDate.substr(11, 2);
  var second = icsDate.substr(13, 2);
  
  return new Date(Date.UTC(year, month - 1, day, hour, minute, second));
}

var date = parseIcsDate("20190103T073640Z");
console.log(date);

关于javascript - 如何从 ISO 日期字符串中获取没有破折号(-)和冒号的日期对象(:) in Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53928631/

相关文章:

javascript - 将解析后的数据传递给回调以便自由使用

javascript - 加载时带有链接的随机图像,无需全部加载

javascript - Box2D 一个夹具用于多个物体

javascript - 如何使用 $.each JQuery 循环 JSON 对象?

icalendar - 将多个事件分组到单个 ics 文件中(icalendar 流)

javascript - Google CustomSearchControl 显示不一致的分页链接

javascript - 如何在 lodash 中为嵌套数组中的每个项目分组

json - 将 Spark 决策树模型调试字符串转换为 scala 中的嵌套 JSON

email - Outlook iCal session 邀请说明问题

ios - 从 iCal 获取事件