Вопрос времени JavaScript - PullRequest
3 голосов
/ 20 июля 2011

Я новичок в JavaScript, но мне нужно запустить проверку, чтобы убедиться, что это дневной свет. Я использую API погоды Yahoo, чтобы вытащить восход и закат. Я просто немного озадачен тем, как лучше сравнивать результаты с текущим временем.

Я смущен, потому что он возвращает время, как закат: «9:01 вечера». Так как есть PM это текст. Я не могу придумать хороший способ сравнить его с текущим временем ... RegExp, а затем преобразовать в целое число, может быть?

Каков наилучший подход к этому и почему (извините, я пытаюсь учиться)?

Заранее спасибо за любую помощь.

Ответы [ 4 ]

1 голос
/ 20 июля 2011

Создайте новый Date () с информацией из API Yahoo, затем сравните Date.now () с sunsetDate.getTime () и sunriseDate.getTime ().

Передача сегодняшней даты в мм / дд /Формат гггг со временем «9:01 вечера» для конструктора Date даст вам правильную дату.

var today = new Date();
today = [today.getMonth()+1, today.getDate(), today.getFullYear()].join('/');

var yahooSunrise = '5:45 am';
var yahooSunset = '9:01 pm';

var sunrise = new Date(today + ' ' + yahooSunrise).getTime();
var sunset = new Date(today + ' ' + yahooSunset).getTime();
var now = Date.now();

var isDaylight = (now > sunrise && now < sunset);
1 голос
/ 20 июля 2011

Это будет работать с чем-то вроде этого, но, возможно, вам может потребоваться изменить время, чтобы приспособиться к конкретному климату:

    function getNow() {
    var now = new Date

    if (now.getHours() < 5)         { return "Could be still dark";}
    else if (now.getHours() < 9)    {return "Definitely day time";}
    else if (now.getHours() < 17)   { return "Definitely day time"; }
    else                            {return "It gets dark now";}
}

alert(getNow());
0 голосов
/ 20 июля 2011

Звучит как хороший кандидат для регулярного выражения данных, которые вы получаете от службы.

Что-то вроде (\d{1,2}):(\d{2})\s(AM|PM) даст вам 3 группы захвата.

1:час (1 или 2 цифры)
2: минута (2 цифры)
3: либо строка «AM», либо «PM»

Затем можно использовать их для анализа фактического времени какцелое число в часах и минутах для сравнения с текущим временем.

0 голосов
/ 20 июля 2011

Одним из быстрых подходов является преобразование текущего времени дня и времени, которое вы возвращаете из Yahoo, в значение «минуты с начала дня».

Например, если Yahoo дает вам 21:01, используйте время, чтобы превратить время в 21:01. Это

21*60 + 1 = 1260 + 1 = 1261 minutes since the beginning of the day

Сделайте это для восхода и захода солнца. Тогда получите текущее время с

new Date()

и делать то же самое.

Тогда просто делайте целочисленные сравнения!

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...