Приращение дня Javascript в секундах переносится в 17:00

Я пытаюсь отслеживать дни с момента рождения моей программы в эпохальных днях. Итак, я даю свою программу:

epochProgram = 15622 // номер дня эпохи, когда родилась эта программа.

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

dateObj = new Date();   
 var biz = parseInt(dateObj.getTime()/1000));
  biz = biz/86400-epochProgram;

Допустим, прошло несколько дней и biz=6.30. Моя проблема такова: 12:00 в 6:30, в 17:00 biz=7,0, а в 23:00 biz=7,2.

Почему десятая цифра .# работает так, как .3 — это начало слова, а .2 — конец дня? Что я могу сделать, чтобы исправить это, чтобы я мог иметь правильный приращение дня?

PS: это местное тихоокеанское время.


person dman    schedule 15.10.2012    source источник
comment
Мне кажется, ваша программа работает правильно. Может быть, вы могли бы подробнее рассказать о своей проблеме?   -  person Asad Saeeduddin    schedule 15.10.2012


Ответы (1)


Вычтите смещение часового пояса:

var biz = (dateObj.getTime() - dateObj.getTimezoneOffset() * 6e4) / 1000 >>> 0;
person MaxArt    schedule 15.10.2012
comment
Я думаю, что мозг некоторых людей будет обрабатывать 60000 лучше, чем 6e4, и какой смысл в сдвиге вправо с заполнением нулями? - person Fabrício Matté; 15.10.2012
comment
@FabrícioMatté 6e4 и >>> писать короче. И >>> также избавляет вас от медленного вызова функции. - person MaxArt; 15.10.2012
comment
Благодарность! не могли бы вы объяснить ››› спасает вас медленная функция? - person dman; 15.10.2012
comment
@dhee parseInt преобразует число с точностью с плавающей запятой в целое число, но делает гораздо больше. В конце концов, обычно это примерно в 10-15 раз медленнее, чем Math.floor или некоторые побитовые операции (которые также короче для ввода). Я не знаю, должен ли ваш фрагмент быть быстрым: но если в этом нет необходимости, вы все равно можете использовать какой-то другой более понятный метод для выполнения той же задачи. - person MaxArt; 15.10.2012