Javascript 日期时间问题 - 转换为 utc

Javascript datetime issue - converting to utc

我的数据库值是这个

2020-03-08 20:44:00

但在 javascript。它显示

Mon Mar 09 2020 09:44:00 GMT+0800 (Singapore Standard Time)

我想在 UI

上显示

2020-03-08 20:44:00

2020-03-08

有没有办法删除时区并仅从数据库中获取实际值。

减去您的时区偏移毫秒数。

var dt = new Date('2020-03-08 20:44:00');
dt = new Date(dt.getTime()-dt.getTimezoneOffset()*60000);
console.log(dt.toUTCString());
var mo = dt.getUTCMonth()+1, d = dt.getUTCDate(), h = dt.getUTCHours();
var m = dt.getUTCMinutes(), s = dt.getUTCSeconds();
if(mo < 10)mo = '0'+mo;
if(d < 10)d = '0'+d;
if(h < 10)h = '0'+h;
if(m < 10)m = '0'+m;
if(s < 10)s = '0'+s;
console.log(dt.getUTCFullYear()+'-'+mo+'-'+d+' '+h+':'+m+':'+s);

您正在静默使用 Date 对象的 .toString() 方法,该方法将 UTC 日期(您的数据库正在存储)转换为当前时区的时间。

如果 date 是您从数据库中获取的变量,那么您可以按照自己的意愿格式化它:

let dateString = date.toISOString().replace('T', ' ').replace(/\..+/, '')

这将获取您的日期,将其转换为 ISO 字符串(格式为 2020-01-10T03:09:24.551Z),并将 T 替换为 space 并将小数点后的所有内容替换为空。

toISOString 不是将日期转换为 DateTime 的正确方法。请按照以下方法从 DateTime 获取日期。

var date = new Date("2020-03-08 20:44:00");
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
var newDate = year + '-' + month + '-' + day;

console.log("Date plush time - "+date);
console.log("Only Date - "+newDate);

试试这个。

 let d = new Date('2020-03-08 20:44:00');
console.log(`${d.getFullYear()}-${d.getMonth() < 10 ? '0' + (d.getMonth() + 1) : d.getMonth() + 1}-${d.getDate() < 10 ? '0' + (d.getDate()): d.getDate()}`);

您可以获取日期的每个部分并构建自己的格式 示例:

let formatted_date = my_date.getFullYear() + "-" + (my_date.getMonth() + 1) + "-" + my_date.getDate()

在此示例中:my_date 保留要显示的日期。

如果您可以使用图书馆,请使用 moment.js

https://momentjs.com/docs/#/displaying/

moment("2020-03-08 20:44:00").format("YYYY-MM-DD");

moment(new Date("2020-03-08 20:44:00")).format("YYYY-MM-DD");

它甚至可以将时间更改为 utc

https://momentjs.com/guides/#/parsing/local-utc-zone/

moment.utc("2020-03-08 20:44:00").format("YYYY-MM-DD");

希望这对您有所帮助:)