当前位置: 首页 > 知识库问答 >
问题:

JavaScript Date.Prototype.ToIsoString()丢失偏移量[重复]

壤驷高旻
2023-03-14

为什么该方法使用UTC时区(Z)而不包括本地时间偏移量(+/-HH:SS)?方法名称中的“ISO”指的是ISO 8601-它允许将“时区指定”表示为其格式的一部分。

换句话说,new Date()告诉我日期和时间,以及时区偏移量(通过getTimeZoneOffset())。但是ToIsoString()只告诉我一个时区中的日期和时间-它丢弃了New date()在区域设置中产生的时间信息。

ToIsoString()也包括始发时区与UTC的偏移量不是很有意义吗?ToIsoString()省略+/-hh:ss会丢失关于原始date的信息(如果它用于序列化的话)。

我的所有AJAX调用(Angular、jQuery)都通过ToIsoString()序列化,因此在将序列化日期传递到服务器时丢失了该日期的本地时间。有什么方法可以让JavaScriptdate输出一个包含偏移量的iso格式字符串(除了使用moment.js这样的库之外),或者我需要编写自己的方法吗?

共有1个答案

牧业
2023-03-14

这是“因为语言规范是这么说的”答案之一(参见ECMA-262§20.3.4.36)。ISO 8601是一种格式,虽然它允许使用时区数据,但ECMAScript仅使用UTC。如果您愿意,可以使用自己的toLocalISOString方法扩展Date.Prototype。顺便说一句,编写这样的方法并不难。

// Format date as ISO 8601 long format with local timezone offset
if (!Date.prototype.toLocalISOString) {
  Date.prototype.toLocalISOString = function() {
  
  // Helper for padding
  function pad(n, len) {
    return ('000' + n).slice(-len);
  }

  // If not called on a Date instance, or timevalue is NaN, return undefined
  if (isNaN(this) || Object.prototype.toString.call(this) != '[object Date]') return;

  // Otherwise, return an ISO format string with the current system timezone offset
  var d = this;
  var os = d.getTimezoneOffset();
  var sign = (os > 0? '-' : '+');
  os = Math.abs(os);

  return pad(d.getFullYear(), 4) + '-' +
         pad(d.getMonth() + 1, 2) + '-' +
         pad(d.getDate(), 2) +
         'T' + 
         pad(d.getHours(), 2) + ':' +
         pad(d.getMinutes(), 2) + ':' +
         pad(d.getSeconds(), 2) + '.' +
         pad(d.getMilliseconds(), 3) + 
       
         // Note sign of ECMASCript offsets are opposite to ISO 8601
         sign +
         pad(os/60 | 0, 2) + ':' +
         pad(os%60, 2);
  }
}
document.write(new Date().toLocalISOString())
 类似资料:
  • 我有一个Kafka消费者,我从它消费数据从一个特定的主题,我看到下面的例外。我使用的是Kafka版本。 我添加了这两个额外的消费者属性,但仍然没有帮助: 那个错误意味着什么?我该如何解决它?我需要添加一些其他消费者属性吗?

  • null 我注意到前面也有人问过类似的问题。但没有什么能结束这个问题。我在这里提到这些链接 Kafka-节点突然从偏移量0消耗 Kafka Consumer:从一开始就开始读取分区,即使有提交的偏移量 Kafka崩溃后,偏移量丢失 Kafka分区和偏移量消失

  • 问题内容: 是否可以跳过X个第一行,并在一个查询中选择所有其他行?像那样: 它将选择:pqr,stu,vwx,yz 我尝试使用LIMIT和OFFSET完成此操作,但是问题是表是动态的,而且我不知道应该输入哪个LIMIT(我不知道表中有多少行)。 问题答案: 如果只需要最后N行,请尝试以下操作: 这会根据的顺序为您提供最后几条记录。 您可以使用自动递增的主键(希望有一个主键)来确定行的顺序(如果无法

  • 我正在尝试将Twitter日期时间转换为本地ISO字符串(用于prettyDate),现在为2天。我只是没弄准当地时间.. im使用以下功能: 在newdate中,一切正常,但toISOString()将它再次返回到原始时间。有谁能帮我从Twitterdate格式为:Thu,31 May 2012 08:33:41+0000的iso中获取当地时间吗

  • 我有一个关于Kafka自动提交机制的问题。我正在使用启用自动提交的Spring-Kafka。作为一个实验,我在系统空闲(主题中没有新消息,没有正在处理的消息)的情况下,将我的消费者与Kafka的连接断开了30秒。重新连接后,我收到了如下几条消息: 第一,我不明白有什么好犯的?系统空闲(所有以前的消息都已提交)。第二,断开时间为30秒,比max.poll.interval.ms的5分钟(300000

  • 为什么实际主题中的偏移值与同一主题中的偏移值不同?PFB偏移位置以及使用的命令。 我错过了什么?