【问题标题】:Javascript datetime issue - converting to utcJavascript 日期时间问题 - 转换为 utc
【发布时间】:2020-01-10 02:49:15
【问题描述】:

我的数据库值是这个

2020-03-08 20:44:00

但是在 javascript 中。它显示

2020 年 3 月 9 日星期一 09:44:00 GMT+0800(新加坡标准时间)

希望我想在 UI 上显示

2020-03-08 20:44:00

2020-03-08

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

【问题讨论】:

  • toISOString 方法可能吗? - 对不起,没有.. .toUTCString 方法
  • 是使用js从数据库中获取的日期吗?
  • 您的问题并不完全清楚:这两个日期相同,因为它们表示同一时刻。因此,如果您正在讨论如何将日期对象显示为字符串,那么第一条评论会为您提供足够的解决方案。
  • @JenuelGanawed 我认为他使用的任何库都将数据库时间戳转换为日期对象,所以这是一个获取与第一个格式相同的日期字符串的问题。

标签: javascript datetime utc


【解决方案1】:

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);

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      试试这个。

       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()}`);

      【讨论】:

        【解决方案4】:

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

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

        在本例中: my_date 保存您要显示的日期。

        【讨论】:

          【解决方案5】:

          如果您能够使用库,请使用 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");
          

          希望这会有所帮助:)

          【讨论】:

            【解决方案6】:

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

            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);

            【讨论】:

            • 不回答问题,他想准确输出数据库中的第一个值。
            猜你喜欢
            • 2014-06-13
            • 2016-06-17
            • 1970-01-01
            • 2011-07-11
            • 2021-12-31
            • 1970-01-01
            • 2012-10-07
            • 1970-01-01
            • 2019-03-24
            相关资源
            最近更新 更多