Вопрос по timezone, jquery, javascript – Часы в разных часовых поясах

6

Я пытаюсь создать два часа на веб-сайте, который говорит об этом два раза. Один из Лондона, другой из Нью-Йорка.

Мне удалось создать часы, которые будут показывать текущее время на моем компьютере, но я не уверен, как поместить часовой пояс в это.

Код, который у меня пока есть:

<script type="text/javascript" language="javascript">

function renderTime() {
    var currentTime = new Date();
    var diem = "AM";
    var h = currentTime.getHours();
    var m = currentTime.getMinutes();
    var s = currentTime.getSeconds();

    if (h == 0) {
        h = 12
    } else if (h > 12) {
        h = h - 12;
        diem = "PM";
    }

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

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

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

    var myClock = document.getElementById ("clockDisplay");
    myClock.textContent = h + ":" + m + ":" + s + " " + diem;

    setTimeout ('renderTime()', 1000);
}
renderTime();
</script>

Это применяется к стилю CSS, который я создал, чтобы у меня были часы с определенным шрифтом.

Here's куча способов, которыми это может быть достигнуто. Quantastical

Ваш Ответ

6   ответов
0

Спасибо всем за вашу помощь. Все это немного сбивало с толку, но я нашел хороший пример того, как я в итоге работал. Проверьте пример 4:http://www.ajaxupdates.com/jclock-jquery-clock-plugin/

Надеюсь, это будет полезно для кого-то еще!

1

Вы можете добавить или вычесть часы из вашей даты с

currentTime.setHours(currentTime.getHours()+offset);

где смещение - любое количество часов.

Я обновил jsfiddle с этой строкой и функцией, чтобы она принимала параметр для смещения. Это не смещение UTC, а количество часов, добавляемых из системного времени. Вы можете получить текущее смещение UTC:currentTime.getTimezoneOffset()/60

демонстрация

Error: User Rate Limit Exceeded Houmy
Error: User Rate Limit ExceededgetTimezoneOffsetError: User Rate Limit Exceeded
2

Сделать этоproperlyвам понадобится база данных часовых поясов, например, одна из тех, что я перечислилВот.

Все остальные ответы на этот вопрос делают ошибку, думая, что «часовой пояс» и «смещение часового пояса»; это одно и то же. Они не. Например, часовой пояс для ЛондонаEurope/London, который может иметь смещение +0 или +1 в зависимости от времени года. Часовой пояс для Нью-ЙоркаAmerica/New_York, который может иметь смещение -5 или -4 на основе совершенно другого набора дат, чем в Лондоне.

Вы можете посмотреть намомент- часовой пояс:

moment().tz("America/New_York").format()
0

Я использую на сайте php m следующее:

<script src="https://ajax.googleapis.c,om/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"
<script type="text/javascript">
$(function() {
    getStatus();
});

function getStatus() {
<?php
echo "    var z = '".strftime("%Z",strtotime("now"))."';\n";
?>
    var d = new Date();
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    var offset = -8;
    if(z == "PDT") offset = -7;
    var currentTime = new Date(utc + (3600000*offset));
    var currentHours = currentTime.getHours ( );
    var currentMinutes = currentTime.getMinutes ( );
    currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
    var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM";
    currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
    currentHours = ( currentHours == 0 ) ? 12 : currentHours;
    var currentTimeString = currentHours + ":" + currentMinutes + ": " + timeOfDay + " " + z;

    $('td#clock').html(currentTimeString);
    setTimeout("getStatus()",5000);
}
</script>

Где я использую таблицу, так что это заполнит

<table><tr><td id='clock'></td></tr></table>

со временем из Лос-Анджелеса (PDT или PST), однако, мой сервер также работает в это время, поэтому передача strftime с вашего сервера может не дать того же эффекта. Но, как указано, это было моей решимостью получить рабочее время в другой зоне.

2

currentTime.getTimezoneOffset() даст вам разницу во времени между временем по Гринвичу (GMT) и местным временем в минутах.

Вы можете использовать это значение для расчета времени в необходимом часовом поясе.

Error: User Rate Limit Exceeded Houmy
1

Проверять, выписыватьсяhttp://www.datejs.com/ хорошо обрабатывает даты и часовые пояса

если вы посмотрите демо, в текстовом поле введите1 GMT против1 MST или же1 EST и это выскочит хорошая дата для вас в этом часовом поясе

Error: User Rate Limit Exceeded Houmy

Похожие вопросы