2013-08-14 3 views
0

Я использую this function in About.com, чтобы получить сегодня номер в году (например: 226). Но я получаю разные результаты (правильный и +1 день) на разных компьютерах, используя this calculator. Я также получаю неправильное значение за 1 день. Но используя this one, я получаю правильный номер дня. Все компьютеры, на которых я тестировал, имеют правильную дату, час, часовой пояс.Номер текущего дня - разные компьютеры, разные дни

Исх. Сейчас 8 минут за полночь, поэтому я получаю правильный день (226), но до полуночи весь день, когда ему было 225, я получал 226.

Я полагаю, что функция в порядке, поэтому проблема должна быть?

Благодаря

+1

Кажется, вы используете онлайн-инструменты, они могут быть привязаны ко времени сервера. – jsedano

+2

Является ли это проблемой часового пояса? Вероятно, вы получаете номер дня в соответствии с UTC, но если вы, например, на восточном побережье США, то номер дня, который вы хотите, отстает на пять часов. –

+0

Мой часовой пояс UTC, все компьютеры, которые я тестировал, находятся у меня дома, а на некоторых компьютерах отлично работает !. Javascript не использует время пользовательской даты? Если я использую 'var daynum = (today.getDOY() - 1),' я получаю правильный день на своем ноутбуке, но на моем рабочем столе я получаю неправильный день. – user1320951

ответ

1

Вы путаться между временем клиента и времени сервера .. сайт ..

http://mistupid.com/calendar/dayofyear.htm использует JavaScript, чтобы вычислить день года по следующей формуле

var DayOfYear = Math.ceil((EnteredDate.getTime() - startofyear.getTime())/one_day) + 1 

Однако, второй сайт (http://www.epochconverter.com/epoch/daynumbers.php) использует время сервера для расчета дня года.

ОБНОВЛЕНИЯ для получения количества дней в соответствии с временем UTC.

Date.prototype.getDOY = function() { 
    var onejan = new Date(this.getFullYear(),0,1); 
    return Math.ceil((this - onejan)/86400000); 
} 


function convertDateToUTC(date) { return new Date(date.getUTCFullYear(),  
    date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(),  
    date.getUTCSeconds()); } 

    var today = new Date(); 
    var a = convertDateToUTC(today); 
    var daynum = a.getDOY(); 

    alert(a); 
    alert(daynum); 
+0

Я понимаю это, но почему на моих 4 компьютерах с тем же часовым поясом, используя функцию JavaScript javascript. У меня есть 2 с правильным количеством дней и 2 с +1 днем? – user1320951

+0

@ user1320951 Возможно ли, что 2 из ваших компьютеров имеют разные настройки часового пояса? Чтобы JavaScript корректно работал со временем, ваш компьютер должен не только отображать нужное время, но также иметь правильные настройки часового пояса. Вы можете просто набрать 'Date();' в консоли JavaScript вашего браузера, и он покажет вам, в каком часовом поясе вы находитесь. Как и мой, «Wed Aug 14 2013 02:50:58 GMT + 0200 (CEST)». –

+0

Во всех ПК часовой пояс установлен на UTC-1, но летом изменение часов и мой часовой час - это то же самое, что и UTC. Между 00h и 01h все было нормально, возвращая 226, теперь его 02: 00h функция var 'daynum = today.getDOY();' возвращает 227, тогда как она должна возвращать 226. From Date(); я получаю _ [02: 03: 57.084] «Ср Авг. 14 2013 02:03:57 GMT + 0000» _ Это вопрос часового пояса, так как я буду получать всегда время UTC? – user1320951

Смежные вопросы