创建一个倒计时,无论在哪个国家/地区,剩余时间都相等
create a countdown that the remain time is equal no mather the country
我可以想象有人已经回答了这个问题,或者它可以被认为是一个重复的问题,我已经搜索了几周但我不知道如何完成这个。
我有一个用 js 制作的倒计时,我面临的问题是每当我在另一个国家测试它时,时间都会抛出不同的时间示例。
我在中美洲,结束日期是 2018 年 4 月 16 日 23:59:59" 如果我在中美洲测试它,它说还剩 6 天 10 小时,如果我 运行 在意大利例如它说还剩 6 天 3 小时,我需要它始终相等并且时区不影响,这甚至可能吗,请帮助如何完成它。
我的脚本正在运行,但不是我需要的方式,我有一个促销将在 "apr 16, 2018 23:59:59" 到期,所以如果它只剩下 5 小时,它会大声说还有 5 小时,无论它在哪里一直在看,但这并没有发生。
$("#masterslider").append("<p id='demo'>.</p>")
$("#masterslider").append("<span> remaining time </span>")
//******************************** update date here ************************
var serverDate = new Date("apr 16, 2018 23:59:59");
var offset = serverDate.getTimezoneOffset();
serverDate = addOffset(serverDate, offset);
setInterval(function(){
updateCountdown();
}, 1000);
function addOffset(date, offset) {
var time = date.getTime() ;
return new Date(time + offset * 6000);
}
function updateCountdown() {
var userDate = new Date();
var distance = serverDate.getTime() - userDate.getTime();
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
//var seconds = Math.floor((distance % (1000 * 60)) / 1000);
if(serverDate.getTime() > userDate.getTime()){
$('#demo').html( days +"day(s)"+ " / " + hours + "hour(s)" + minutes + "minutes(s)");
}
else
{
$("#demo").html(mas);
$("#masterslider span").hide();
}
}
</script>
中的 moment-timezone
const moment = require("moment-timezone");
function toTimeZone(time, offset) {
var format = 'YYYY/MM/DD HH:mm:ss ZZ';
return moment(time, format).utcOffset(offset).format(format);
}
toTimeZone("2018/04/10 15:37", "+0730")
我已经检查并为 "event timestamp" 设置了正确的时区,无论我使用的本地客户端时区如何都对我有效。
let targetDate = new Date("2018-04-11 23:59:59 GMT-0800");
let refreshDelayMs = 1000;
function updateCounter() {
let distance = (targetDate - new Date()) / 1000;
let seconds = Math.floor(distance % 60).toString().padStart(2, '0');
distance = distance / 60;
let minutes = Math.floor(distance % 60).toString().padStart(2, '0');
distance = distance / 60;
let hours = Math.floor(distance % 24).toString().padStart(2, '0');
let days = Math.floor(distance / 24).toString().padStart(2, '0');
document.querySelector('.counter').innerHTML = `${days} days ${hours}:${minutes}:${seconds}`;
setTimeout(updateCounter, refreshDelayMs);
}
updateCounter();
Remains: <span class="counter"></span>
我可以想象有人已经回答了这个问题,或者它可以被认为是一个重复的问题,我已经搜索了几周但我不知道如何完成这个。
我有一个用 js 制作的倒计时,我面临的问题是每当我在另一个国家测试它时,时间都会抛出不同的时间示例。
我在中美洲,结束日期是 2018 年 4 月 16 日 23:59:59" 如果我在中美洲测试它,它说还剩 6 天 10 小时,如果我 运行 在意大利例如它说还剩 6 天 3 小时,我需要它始终相等并且时区不影响,这甚至可能吗,请帮助如何完成它。
我的脚本正在运行,但不是我需要的方式,我有一个促销将在 "apr 16, 2018 23:59:59" 到期,所以如果它只剩下 5 小时,它会大声说还有 5 小时,无论它在哪里一直在看,但这并没有发生。
$("#masterslider").append("<p id='demo'>.</p>")
$("#masterslider").append("<span> remaining time </span>")
//******************************** update date here ************************
var serverDate = new Date("apr 16, 2018 23:59:59");
var offset = serverDate.getTimezoneOffset();
serverDate = addOffset(serverDate, offset);
setInterval(function(){
updateCountdown();
}, 1000);
function addOffset(date, offset) {
var time = date.getTime() ;
return new Date(time + offset * 6000);
}
function updateCountdown() {
var userDate = new Date();
var distance = serverDate.getTime() - userDate.getTime();
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
//var seconds = Math.floor((distance % (1000 * 60)) / 1000);
if(serverDate.getTime() > userDate.getTime()){
$('#demo').html( days +"day(s)"+ " / " + hours + "hour(s)" + minutes + "minutes(s)");
}
else
{
$("#demo").html(mas);
$("#masterslider span").hide();
}
}
</script>
const moment = require("moment-timezone");
function toTimeZone(time, offset) {
var format = 'YYYY/MM/DD HH:mm:ss ZZ';
return moment(time, format).utcOffset(offset).format(format);
}
toTimeZone("2018/04/10 15:37", "+0730")
我已经检查并为 "event timestamp" 设置了正确的时区,无论我使用的本地客户端时区如何都对我有效。
let targetDate = new Date("2018-04-11 23:59:59 GMT-0800");
let refreshDelayMs = 1000;
function updateCounter() {
let distance = (targetDate - new Date()) / 1000;
let seconds = Math.floor(distance % 60).toString().padStart(2, '0');
distance = distance / 60;
let minutes = Math.floor(distance % 60).toString().padStart(2, '0');
distance = distance / 60;
let hours = Math.floor(distance % 24).toString().padStart(2, '0');
let days = Math.floor(distance / 24).toString().padStart(2, '0');
document.querySelector('.counter').innerHTML = `${days} days ${hours}:${minutes}:${seconds}`;
setTimeout(updateCounter, refreshDelayMs);
}
updateCounter();
Remains: <span class="counter"></span>