首页 文章

如何将日期更新为UTC -8的当前日期

提问于
浏览
2

我想在我的网页上使用此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字符串格式

3 回答

  • 0

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

    从您可以使用替换日期删除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
    
  • 1

    嗯..你确定要显示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"
    

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

相关问题