Разная строка текста каждый час - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь сделать сайт, который отображает различную строку текста в зависимости от часа (GMT).Я пытался использовать JavaScript, но я очень начинающий!Мне удалось собрать следующий фрагмент кода вместе, но, похоже, я не могу заставить его работать.Любая помощь приветствуется!

function getTime(zone, success) {
    var url = 'http://json-time.appspot.com/time.json?tz=' + zone,
        ud = 'json' + (+new Date());
    window[ud]= function(o){
        success && success(new Date(o.datetime));
    };
    document.getElementsByTagName('head')[0].appendChild((function(){
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = url + '&callback=' + ud;
        return s;
    })());
}

getTime('GMT', function(time){

    if (time>10 && time<11)
  {
  document.write("<b>Paris</b>");
  }
    ;
});

Ответы [ 4 ]

1 голос
/ 08 марта 2012

Javascript имеет класс Date.

var hour = new Date().getHours();

if(...) {
    // do something
}

Этот фрагмент кода

if (hour>10 && hour<11)

не может работать с часами, потому что время не может быть> 10 и <11 вв то же время (час является целым). </p>

0 голосов
/ 08 марта 2012

Я создал быструю страницу jsfiddle: http://jsfiddle.net/eBAGS/5/ с демонстрацией, которая должна делать то, что вам нужно.Он получает время с ПК пользователя, а не с сервера, но его можно изменить.

HTML

<button onClick="getPhrase()">Show me a phrase for this hour</button>
<div id="placeHolder"></div>

Javascript

function getPhrase() {
    h = new Date().getHours(); //Get the current hour

    phrase = new Array(); //Create an array of phrases
    phrase[1] = 'Hello';
    phrase[2] = 'there';
    phrase[3] = 'this';
    phrase[4] = 'will';
    phrase[5] = 'show';
    phrase[6] = 'a';
    phrase[7] = 'different';
    phrase[8] = 'message';
    phrase[9] = 'depending';
    phrase[10] = 'on';
    phrase[11] = 'the';
    phrase[12] = 'hour';
    phrase[13] = 'of';
    phrase[14] = 'day';
    phrase[15] = 'that';
    phrase[16] = 'you';
    phrase[17] = 'look';
    phrase[18] = 'at';
    phrase[19] = 'it';
    phrase[20] = '!';
    phrase[21] = 'W';
    phrase[22] = 'X';
    phrase[23] = 'Y';
    phrase[24] = 'Z';

    document.getElementById('placeHolder').innerHTML = phrase[h-1]; //Show the array item relevant to the hour
}​
0 голосов
/ 08 марта 2012

На первый взгляд:

  1. o.datetime неправильно отформатирован для метода даты JS.
  2. вы возвращаете экземпляр new Date(), чтобы получить час использования .getHours()

Вы можете посмотреть здесь, чтобы найти способ конвертировать вашу dateString из o.datetime Как я могу преобразовать строку в дату и время с указанием формата в JavaScript?

Используйте time.getHours() > 12 вместо time > 12

Если вы используете: getDateFromFormat() из http://www.mattkruse.com/javascript/date/ Я думаю, что преобразование будет что-то вроде E, dd MMM hh:mm:ss +0000


ПРОСТОЙ ОТВЕТ:

Вы можете просто проанализировать hour для вашего обратного вызова: (Смотрите ваш JSON здесь http://json -time.appspot.com / time.json? Tz = GMT )

function getTime(zone, success) {
    var url = 'http://json-time.appspot.com/time.json?tz=' + zone,
        ud = 'json' + (+new Date());
    window[ud]= function(o){
        success && success(o.hour); // See o.hour here
    };
    document.getElementsByTagName('head')[0].appendChild((function(){
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = url + '&callback=' + ud;
        return s;
    })());
}

getTime('GMT', function(time){
    if (time>10 && time<11) {
        document.write("<b>Paris</b>");
    }
});
0 голосов
/ 08 марта 2012

Как насчет:

var now = new Date();
var utcMillis = now.getTime() + now.getTimzoneOffset() * 60000;
var hour = new Date(utcMillis).getHours(); // 0-23

switch(hour) {
  case 10: document.write("<b>Paris</b>"); break;
  //...
}

Немного полезной информации здесь: http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329

Вы также можете поместить свои фразы в массив (который вы можете получить с сервера):

var phrases = ["Hi!", "blah", "more blah", ...];

... и затем вы можете заменить вышеуказанный переключатель на:

document.write("<b>" + phrases[hour] + "</b>");

Возможно, вы захотите сэкономить немного времени и использовать среду, которая заставляет вещи работать примерно так жев разных браузерах. JQuery мой любимый, но их много.Такие библиотеки позволяют легко манипулировать контентом на вашей странице, получать JSON с сервера и т. Д. И т. Д.

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