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

如何将日期转换为带有时区的字符串[重复]

林魁
2023-03-14

在我的数据库中,我必须把一个日期时间以ISO格式与时区。例如,我有以下条目列:

17/02/2016 22:00:00 +01:00

我有一个web服务,它接受日期(在JSON对象中),如下所示:

{
    //...
    "Start": "2016-02-17T22:00:00+01:00"
    //...
}

现在,在我的javascript代码中,我尝试了:

var today = new Date();
var dateString = today.toISOString();
"2016-03-05T12:10:32.537Z"
"2016-03-05T13:10:32.537+01:00"

谢谢

共有1个答案

方嘉言
2023-03-14

我相信您不能直接从date函数获取本地ISO 8601格式。toisoString()以UTC/GMT:2016-03-05T12:10:32.537Z表示时间(这就是最后的Z的意思,它表示UTC)

这就是您自己编写字符串的方法:

var date = new Date(); // this is your input date

var offsetHours = -date.getTimezoneOffset() / 60;
var offsetMinutesForDisplay = Math.abs(-date.getTimezoneOffset() % 60);
var offsetHoursForDisplay = Math.floor(offsetHours) + (offsetHours < 0 && offsetMinutesForDisplay != 0 ? 1 : 0);
var isoOffset = (offsetHours >= 0 ? ("+" + fillDigit(offsetHoursForDisplay, true)) : fillDigit(offsetHoursForDisplay, true)) + ':' + fillDigit(offsetMinutesForDisplay, true);

document.getElementById('myDiv').innerHTML = date.getFullYear() + '-' + fillDigit(date.getMonth() + 1, true) + '-' + fillDigit(date.getDate(), true) + 'T' + fillDigit(date.getHours(), true) + ':' + fillDigit(date.getMinutes(), true) + ':' + fillDigit(date.getSeconds(), true) + isoOffset;

function fillDigit(value, withDigit) { // we want to display 04:00 instead of 4:00
  if (value >= 0 && value < 10) {
    return (withDigit ? "0" : " ") + value;
  }
  if (value > -10 && value < 0) {
    return '-' + (withDigit ? "0" : " ") + (-value);
  }
  return value;
}
<div id='myDiv'></div>
 类似资料:
  • 我有一些日期格式的字符串,例如 我使用SimpleDateForate并尝试将String类型转换为Date类型。它将String类型转换为Date类型,但是Java无法识别时区“MYT”,而是将其设置为计算机的默认时区,即“CST”。我需要在Date对象中记录时区。我该怎么做?

  • 我有一个带时区的日期(如2014年3月21日08:00:00)(“如美国/丹佛”),我想将该日期转换为格林尼治标准时间;我怎么能这样做? 我还想知道Oracle是否接受DST?它会自动处理吗?是否以相同的方式支持所有时区? 注:“来自时区”在每种情况下都会改变;所以,并不总是美国/丹佛

  • 问题内容: 我正在获取xml和rss提要,并将数据放入数据库中。到目前为止,我遇到了两种不同的日期格式… 和 我相信还会有更多。我的日期的postgresql数据库是没有时区的时间戳。php中是否存在现有函数,或者是否存在将任何日期字符串转换为不带时区的时间戳的程序(Ymd H:i:s)? 问题答案: 搭配使用: 结果: 。 结果:

  • 我的一个软件中有这段代码,我简化了它,并在一个示例java类中重写了它。今天是“2022-04-08”,当我执行此代码时,变量等于,但它应该是。如何解决这个问题?

  • 我正在与它的时区约会,我想把它转换成另一个时区,例如。我的日期是“3/15/2013 3:01:53 PM”,它位于时区“GMT-06:00”。我想在'GMT-05:00'时区转换这个。我有很多搜索,我不知道实际约会是如何运作。如何将时区应用到日期。我尝试过SimpleDateFormat、Calender和Offset。 它返回输出。我猜应该是,因为时间在'GMT-06:00'时区,所以应该是H

  • 问题内容: 我想将“ 2014-07-15 06:55:14.198000 + 00:00”此字符串日期转换为Swift中的NSDate。 问题答案: 试试这个: 要进行进一步查询,请分别检查 Foundation 框架的Objective- C和Swift的NSDateFormatter和DateFormatter类。 __ Swift 3及更高版本(包括Swift 4)