将日期时间字符串转换为 utc

Converting date time string to utc

我有一个输入时间设置是这样的。

{
    "effectiveFrom": "2022-03-24 06:28",
}

我需要将其转换为像这样的 UTC 格式

{
       "effective_from": "2022-03-24T00:58:00.000Z",
}

我该怎么做我在这里使用这段代码,但它没有按预期工作任何帮助都很好。

new Date(ctx.params.dateTime);

当您使用 new Date(ctx.params.dateTime) 解析日期字符串时,您将得到 Date object in return.

要获取 UTC 字符串作为输出,您可以对该对象调用 toISOString() 方法。

const dt = new Date('2022-03-24 06:28')

const isoString = dt.toISOString()

console.log(isoString)

The toISOString() method returns a string in simplified extended ISO format (ISO 8601), which is always 24 or 27 characters long (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectively). The timezone is always zero UTC offset, as denoted by the suffix "Z".

来源:MDN Web Docs

console.log(new Date('2022-03-24 06:28').toISOString())

.toISOString() 将为您提供所需的格式。但是你不能对其执行任何日期操作,因为你得到的输出是一个字符串。

我刚刚创建了一个简单的节点文件并检查你哪里做错了。

var http = require("http");
const Sequelize = require("sequelize");
const sequelize = new Sequelize("test", "postgres", "postgres", {
  host: "localhost",
  port: 5431,
  dialect: "postgres",
  options: {
    encrypt: false,
  },
});

const UserProfile = sequelize.define("userProfile", {
  name: {
    type: Sequelize.STRING,
  },
  DateTimeCol: {
    type: Sequelize.DATE,
  },
  TimeCol: {
    type: Sequelize.TIME,
  },
});

userProfile.sync().then(() => {
  userProfile.create({
    name: "Test User",
    DateTimeCol: "2022-03-24T08:00:00.000Z",
    TimeCol: "13:00",
  });
  userProfile.findAll().then((data) => console.log("user response", data));
});

var server = http.createServer(function (req, res) {
  res.writeHead(200);
  res.end();
});
server.listen(8085);

顺便说一句,我已经使用sequelize和postgres进行了测试