【问题标题】:Create Countdown Timer Based On String基于字符串创建倒数计时器
【发布时间】:2013-12-31 21:01:26
【问题描述】:

我正在编写一个脚本,该脚本将根据管理员定义的字符串日期和时间创建倒数计时器。我已经对其进行了编码,但是,存在用户根据时区看到不同计时器的问题。例如,如果管理员将日期和时间设置为今天下午 4:50(现在一小时后),他会在 01:00:00 看到计时器,而我会在 04:00:00 看到它.显然,我希望每个人都显示相同的计时器。

有什么想法吗?

下面是部分代码:

//stringDate is the date and time string the admin sets
var splitSD = stringDate.split(' ');

    //isolate date, time, notation
    var splitDate = splitSD[0];
    var splitTime = splitSD[1];
    var splitNotation = splitSD[2];

    //isolate month, day, year
    var formatDate = splitDate.split('/');
    formatDate['month'] = formatDate[0];
    formatDate['day'] = formatDate[1];
    formatDate['year'] = formatDate[2];

    //isolate hour, minute, second
    var formatTime = splitTime.split(':');
    formatTime['hour'] = formatTime[0];
    formatTime['minute'] = formatTime[1];
    formatTime['second'] = '00';

    //change hour to 24-hour clock based on notation
    if(splitNotation == 'PM' && parseInt(formatTime['hour'])<12){
        formatTime['hour'] = parseInt(formatTime['hour']) + 12;
    }
    if(splitNotation == 'AM' && parseInt(formatTime['hour'])==12){
        formatTime['hour'] = parseInt(formatTime['hour']) - 12;
    }

    //prepend 0 in case...
    formatDate['month'] = (formatDate['month'].length == 1) ? '0'+formatDate['month'] : formatDate['month'];
    formatDate['day'] = (formatDate['day'].length == 1) ? '0'+formatDate['day'] : formatDate['day'];

    formatTime['hour'] = (formatTime['hour'].length == 1) ? '0'+formatTime['hour'] : formatTime['hour'];
    formatTime['minute'] = (formatTime['minute'].length == 1) ? '0'+formatTime['minute'] : formatTime['minute'];

    //format full date and prevent conversion to local time
    var fullFD = new Date(formatDate['year'] + '-' + formatDate['month'] + '-' + formatDate['day'] + 'T' + formatTime['hour'] + ':' + formatTime['minute'] + ':00-08:00');
    //make timestamp
    var fullFDTimestamp = Math.round(fullFD / 1000);

    return fullFDTimestamp;

【问题讨论】:

  • 我认为您应该使用服务器时间作为参考
  • 使用(new Date()).getTimezoneOffset()。这给出了本地时间和 GMT 之间的差异(以分钟为单位)
  • @tewathia 我按照你的建议使用了 getTimezoneOffset() ,现在计时器工作正常。谢谢!

标签: javascript date


【解决方案1】:

按要求回答我的评论。

使用 Date.prototype 的 getTimezoneOffset 方法。它以分钟为单位给出本地时间和 GMT UTC 之间的差异。您可以校准倒计时计时器以考虑此偏移值并显示所需时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 2011-10-30
    • 2015-11-13
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多