如何在jquery倒计时器中设置时区

c9x0cxw0  于 2022-11-29  发布在  jQuery
关注(0)|答案(3)|浏览(135)

我想在jquery倒计时中设置GMT+5:30作为我的时区。倒计时的开始时间是“Thu May 20 16:00:00 IST 2010”结束时间是“Thu May 20 17:00:00 IST 2010”作为值。
+330是我的时区,以分钟为单位。但我的倒计时从00:35:00开始。我希望倒计时从01:00:00开始。不知道为什么会有差异。

<script type="text/javascript">
        $(function () {
            var endTime = '#{myBean.getCountDownDate()}';
            $('#defaultCountdown').countdown({
                until: endTime, format: 'HMS',
                timezone: +330,
                compact: true, description: '#{myBean.getCountDownDate()}'});
        });
    </script>
kq0g1dla

kq0g1dla1#

当使用until参数时,倒计时插件会倒计时到该时间。
这将使用正确的偏移量运行一个小时。

$('#countdown').countdown({
    until: $.countdown.UTCDate(+330, 2010, 6-1, 20, 17),
    format: 'HMS',
    compact: true
});

由于2010年:06:20:17已经过去,它将显示00:00:00。
我敢打赌,你在倒计时中得到00:35:00的原因是你在2010:06:20:16:25左右看到它。

fhg3lkii

fhg3lkii2#

将“结束时间”格式更改为“2010年5月20日星期四17:00:00 IST”时会发生什么?

  • 编辑-
    看起来您不应该将日期值作为String传递给until。您可以传入Date来指定确切的日期/时间,但字符串只应该用作时间偏移量,这就是为什么在刷新时总是获得相同的剩余时间量。
    我无法让Date转换带有“IST”时区的字符串,所以我最终使用了“GMT+05:30”。我还将时区偏移量设置为小时而不是分钟。
<script type="text/javascript">
$(function () {
    var endTime = "Tue, 29 Jun 2010 12:00:00 GMT+0530";
    $('#defaultCountdown').countdown({
        until: new Date(endTime), format: 'HMS',
        timezone: +5.5,
        compact: true, description: endTime.toString()});
});
</script>
67up9zun

67up9zun3#

<script>
setInterval(function(){
    var timeZone = "America/New_York";
    var TimerEndDate = "Nov 25 2022";
    var endHour = 23;
    var endMinute = 59;
    var endSeconds = 59;

    //for starting time for timer 
    //bydefault set to america current time
    var nowDate = new Date();
    var nowTimeZone = convertTZ(nowDate, timeZone); 
    var now = new Date(nowTimeZone.getFullYear(),nowTimeZone.getMonth(),nowTimeZone.getDate());
    now.setHours(nowTimeZone.getHours(), nowTimeZone.getMinutes(), nowTimeZone.getSeconds());

    var endDate = new Date(TimerEndDate+" "+endHour+":"+endMinute+":"+endSeconds);
    var endDateTime = convertTZ(endDate, timeZone);
    var future = new Date(endDateTime.getFullYear(),endDateTime.getMonth(),endDateTime.getDate());
    future.setHours(endHour, endMinute, endSeconds);

    var difference = Math.floor((future - now) / 1000);

    var seconds = fixIntegers(difference % 60);
    difference = Math.floor(difference / 60);

    var minutes = fixIntegers(difference % 60);
    difference = Math.floor(difference / 60);

    var hours = fixIntegers(difference % 24);
    difference = Math.floor(difference / 24);

    var days = difference;
    $("#seconds").text(seconds + "s");
    $("#minutes").text(minutes + "m");
    $("#hours").text(hours + "h");
    $("#days").text(days + "d");
}, 1000);
function convertTZ(date, tzString) {
    return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));   
}
function fixIntegers(integer)
{
    if (integer < 0)
        integer = 0;
    if (integer < 10)
        return "0" + integer;
    return "" + integer;
}
</script>
<span id="days"></span>
<span id="hours"></span>
<span id="minutes"></span>
<span id="seconds"></span>

相关问题