Дата JavaScript - PullRequest
       9

Дата JavaScript

5 голосов
/ 01 сентября 2010

Я пытаюсь понять больше об объекте Date в javascript.Я думал, что когда вы вызываете valueOf (), вы получаете количество миллисекунд с 1 января 1970 года. Поэтому я ожидал, что следующее должно возвращать ровно ноль;

alert((new Date(1970, 1, 1).valueOf() )/ ( 86400 * 1000));

, но это не так,возвращает 30,958333333333332.Чего мне не хватает?

гр,

Коэн

Ответы [ 8 ]

6 голосов
/ 01 сентября 2010

new Дата (1970, 1, 1) на самом деле февраль. Месяцы с нулевой индексациейПопробуйте изменить его на новую дату (1970, 0, 1).

2 голосов
/ 01 сентября 2010

Второй параметр, месяц, начинается с 0, поэтому вам нужно сделать:

alert((new Date(1970, 0, 1).valueOf() )/ ( 86400 * 1000));

, но даже при этом вы получите смещение в секундах от времени по Гринвичу.

введенное вами значение говорит о том, что вы GMT +1:)

2 голосов
/ 01 сентября 2010

Если вы хотите работать с временем эпохи Unix , у вас есть несколько опций

  • UTC() Возвращает количество миллисекунд в строке даты с полуночиот 1 января 1970 года по универсальному времени
  • setTime() Устанавливает дату и время путем сложения или вычитания указанного количества миллисекунд до / с полуночи 1 января 1970 года
  • parse()Анализирует строку даты и возвращает количество миллисекунд с полуночи 1 января 1970 года
  • getTime() Возвращает количество миллисекунд с полуночи 1 января 1970 года

valueOf() возвращаетПримитив значения, я бы держался от него подальше и работал с вышеуказанными параметрами.

source: http://www.w3schools.com/jsref/jsref_obj_date.asp.

edit: также, ваш запрос на 1 февраля 1970

используйте это, опасно идти одному:

var d=new Date(1970, 0, 1);
document.write(d.getTime());

или

var d= Date.parse("Jan 1, 1970"); //Note, we don't use NEW keyword.
document.write(d);

Помните, epcoh - ср. 31 декабря 1969 19:00:00 GMT-0500.Если вы используете .getTime(), вы увидите время UTC, чт, 01 января 1970 г. 00:00:00 GMT + 0000.

0 голосов
/ 01 сентября 2010

это был месяц, который должен был быть 0 в сочетании с разницей в часах от GMT

alert ((новая дата (1970, 0, 1, 1, 0, 0, 0) .valueOf ()));

производит 0

0 голосов
/ 01 сентября 2010

Первое января 1970 года с объектом Date является new Date(1970, 0, 1)

0 голосов
/ 01 сентября 2010

1 января 1970 года - new Date(1970, 0, 1), поскольку месяцы начинаются с 0 = января.

0 голосов
/ 01 сентября 2010

Месяцы начинаются с нуля в объектах Date.

0 голосов
/ 01 сентября 2010

Метод, который вы ищете, .getTime() не .valueOf()

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