【问题标题】:How do I get this to display only the current DATE but within the selected timezone?如何让它仅显示当前 DATE 但在所选时区内?
【发布时间】:2017-12-30 13:54:57
【问题描述】:

function ctDT(){

var now = new Date(); 
var today = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),  now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
var anHour = 1000 * 60 * 60;
today = new Date(today.getTime() - anHour * 5);

var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();

if (hours >= 12){
meridiem = "";
}
else {
meridiem = "";
}


if (minutes<10){
minutes = "0" + minutes;
}
else {
minutes = minutes;
}

if (seconds<10){
seconds = "0" + seconds;
}
else {
seconds = seconds;
}

document.getElementById("ctDT").innerHTML = (hours + ":" + minutes + meridiem);

}

ctDT();
&lt;div id="ctDT"&gt;&lt;/div&gt;

我是 Javascript 新手,但我的朋友帮我做了一次展示。如何让它显示日期?

我可以看到有 getUTCDate,但是当我只用日期替换整个小时 + 分钟部分时,它就出错了。

【问题讨论】:

    标签: javascript time


    【解决方案1】:

    使用这个 Date 对象方法:

    var now = new Date();
    now.toDateString();
    
    document.getElementById("date").innerHTML = now;
    &lt;div id="date"&gt;&lt;/div&gt;

    【讨论】:

    • 这会有所帮助,但我需要显示另一个时区的日期。
    【解决方案2】:

    使用您的代码,您仍然想做的就是获取日期、月份和年份。您可以使用getDate()getMonth()getFullYear

    请记住将+1 添加到月份,因为JavaScript 月份从0 开始。

    function ctDT(){
    
    var now = new Date();
    
    // Convert date to UTC
    var nowUTC = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),  now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
    
    // Add/Subtract offset from UTC
    nowUTC.setHours(nowUTC.getHours()+1);
    
    // Get date parts
    var day = nowUTC.getDate();
    var month = nowUTC.getMonth();
    var year = nowUTC.getFullYear();
    
    var hours = nowUTC.getHours();
    var minutes = nowUTC.getMinutes();
    var seconds = nowUTC.getSeconds();
    
    if (hours >= 12){
    meridiem = "";
    }
    else {
    meridiem = "";
    }
    
    
    if (minutes<10){
    minutes = "0" + minutes;
    }
    else {
    minutes = minutes;
    }
    
    if (seconds<10){
    seconds = "0" + seconds;
    }
    else {
    seconds = seconds;
    }
    
    // Display
    document.getElementById("ctDT").innerHTML = day + '/' + (month + 1) + '/' + year;
    // document.getElementById("ctDT").innerHTML += ' ' + hours + ":" + minutes + meridiem;  //uncomment this line to display time as well
    
    }
    
    ctDT();
    &lt;div id="ctDT"&gt;&lt;/div&gt;

    【讨论】:

    • 谢谢,如果我要更改月份和日期的位置,我该怎么办? (天 + '/' + 月 + 1 + '/' + 年);没用。
    • 嗯,时间似乎没有更新到正确的时区。我的 CEST 时间是 7/25,但它显示 7/24 atm。
    • 默认情况下,JavaScript 将使用客户端的本地时间,因此Date() 将返回您的本地时间。只是不要像您的代码那样将其转换为 UTC。 (请记住,这取决于您的浏览器设置。)
    • 正确。以这种方式使用时,您必须将(month + 1) 括在括号中。
    • 我试图让它显示为 CET,而不是 CEST,因此我不能只使用我的本地日期。它是在 UTC 中设置的,所以它不仅仅是基于我的时间。该代码可以调整时间但不能调整日期,你知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 2021-07-05
    • 2017-10-13
    • 2012-07-27
    • 2013-01-09
    • 2019-08-17
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多