js处理ISO8601时间

╰+攻爆jí腚メ 2021-11-05 10:48 600阅读 0赞

原文:https://blog.csdn.net/mayixixi/article/details/8030473

ISO 8601扩展格式为: YYYY-MM-DDTHH:mm:ss.sssZ 例如:(下图中红色边框圈起来的部分)

aHR0cHM6Ly9pbWctbXkuY3Nkbi5uZXQvdXBsb2Fkcy8yMDEyMDkvMjkvMTM0ODg3OTkzN18yMzA1LnBuZw

处理代码如下:

  1. function ISO8601DateStr2Date (string) {
  2. var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
  3. "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
  4. "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
  5. if(string)
  6. {
  7. var d = string.match(new RegExp(regexp));
  8. var offset = 0;
  9. var date = new Date(d[1], 0, 1);
  10. if (d[3]) {
  11. date.setMonth(d[3] - 1);
  12. }
  13. if (d[5]) {
  14. date.setDate(d[5]);
  15. }
  16. if (d[7]) {
  17. date.setHours(d[7]);
  18. }
  19. if (d[8]) {
  20. date.setMinutes(d[8]);
  21. }
  22. if (d[10]) {
  23. date.setSeconds(d[10]);
  24. }
  25. if (d[12]) {
  26. date.setMilliseconds(Number("0." + d[12]) * 1000);
  27. }
  28. if (d[14]) {
  29. offset = (Number(d[16]) * 60) + Number(d[17]);
  30. offset *= ((d[15] == '-') ? 1 : -1);
  31. }
  32. offset -= date.getTimezoneOffset();
  33. var time = (Number(date) + (offset * 60 * 1000));
  34. return time;
  35. }
  36. else
  37. {
  38. return null;
  39. }
  40. }

发表评论

表情:
评论列表 (有 0 条评论,600人围观)

还没有评论,来说两句吧...

相关阅读

    相关 了解一下ISO 8601是什么

    上周的组内分享,有朋友介绍一个工具包生成的日期是UTC,需要转成北京时,另外还带了Z,很是不解,组长介绍说这是ISO 8601的日期格式标准。 以前写过一些数据同步的服务,某