【问题标题】:How to update the date to the current date for UTC -8如何将日期更新为 UTC -8 的当前日期
【发布时间】:2013-07-04 03:00:03
【问题描述】:

我想在我的网页上使用此 JavaScript 代码显示 UTC 日期。

<script>
    function myDate()
    {
    var now = new Date();
    var d = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
    var x = document.getElementById("demo");
    x.innerHTML=d;
    }
</script>

使用此代码,我将 UTC 日期显示为本地字符串,如下所示:“Thu Jul 04 2013 00:00:00 GMT+0530 (India Standard Time)”

我不想显示带有本地时间偏移 (GMT+0530 (IST)) 的字符串,而是希望时间显示为 UTC 字符串格式

【问题讨论】:

标签: javascript jquery momentjs


【解决方案1】:

不同浏览器返回的日期格式不同

要从日期中删除 GMT OFFSET,您可以使用替换

var d = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
d = d.toString().replace(/GMT.+/,"");

【讨论】:

    【解决方案2】:

    首先,问题在于您通过传入 UTC 年、月和日来实例化本地 Date 对象。然后使用提供的值创建一个本地日期。通过这样做,您可能会根据您希望它是 UTC 还是本地日期来创建不正确的日期。在您的情况下,如果您希望 var now 为 UTC,则您当前实例化的方式与当地时间不正确。

    无论如何,日期在 JavaScript 中可能很棘手,所以我会考虑使用 Moment.js 来解决这个问题

    这是一个很棒的库,提供了您可能需要的所有用于操作和转换 JavaScript 日期的函数。

    例如,你可以执行以下操作:

    var now = moment(); // current date and time in local format
    var nowAsUTC = now.utc(); // current local date and time converted to UTC
    var alsoNowAsUTC = moment.utc() // same as the line above, but staring in UTC
    console.log(nowUTC.format("DD/MM/YYYY, hh:mm:ss"))// prints a pretty UTC string
    

    【讨论】:

    • 感谢您的帮助!但我仍然收到“Thu Jul 04 2013 03:22:20 GMT+0000”,但我只想显示 UTC - 8 日期,例如“2013 年 7 月 4 日星期四”没有时间和格林威治标准时间等
    • 如果您要使用 moment 和我的示例,您需要将格式字符串更改为:nowUTC.format("ddd MMM DD YYYY")now.format("ddd MMM DD YYYY")
    【解决方案3】:

    嗯……你确定要显示 UTC-8 吗?我猜你真的想将时间转换为美国太平洋时区。那不是总是 UTC-8。有时是 UTC-8,有时是 UTC-7。

    如果您实际上不在美国太平洋时区,在 JavaScript 中可靠地执行此操作的唯一方法是使用实​​现 TZDB 数据库的库。 I list several of them here.

    例如,使用walltime-js 库,您可以执行以下操作:

    var date = new Date();
    var pacific = WallTime.UTCToWallTime(date, "America/Los_Angeles");
    var s = pacific.toDateString() + ' ' + pacific.toFormattedTime();
    
    // output:  "Fri Apr 26 2013 5:44 PM"
    

    您不能只添加或减去一个固定数字,因为目标时区可能使用不同的偏移量,具体取决于您所谈论的日期。这主要是由于夏令时,但也因为时区随时间而变化。

    【讨论】:

      猜你喜欢
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 2020-05-16
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多