2010-12-06 4 views
1

У меня очень странная проблема с функцией getDate javascript. В начале некоторой функции, я создал объект Date, используя:Javascript getDate problem

var day = new Date(date); 

, в котором date является временной меткой UNIX.

Я не изменяю объект дня, но через некоторое время я пытаюсь получить день месяца этого объекта, но day.getDate() продолжает давать мне неправильное значение.

Например:

alert(day.getTime() + "-" + day.getDate() + "-"+ day.getMonth() +"-" + day.getFullYear() + "-" + day.getHours() + "-" + day.getMinutes() + "-" + day.getSeconds()); 

дает мне следующий результат: 1290297600-15-0-1970-23-24-57

и в какой-то другой точке результат: 1290384000-15-0-1970-23-26-24

И это странная часть, если вы выполните поиск unixtimestamp 1290297600, вы увидите, что это временная метка для 21 ноября 2010 года в 00:00:00 gmt (1290384000 на следующий день, в то же время)
Временные метки cor cor но я не могу понять даты, которые он мне дает.
Это происходит со мной в любом браузере.

Что я делаю неправильно?

ответ

2

Проблема в том, что Date object в JavaScript не берет временную метку Unix (секунды с эпохи), она фактически занимает миллисекунды с эпохи. Если вы просто умножаете переменную date на 1000, вы получаете правильный результат.

Example here

+0

Сэр, вы мой герой на сегодня! Большое вам спасибо, полностью упустил это. – Tiddo 2010-12-06 22:02:50

0

Time = Unix формат временной метки. Я добавил 64800 секунд, чтобы он был преобразован в Mountain Standard Time.

* Отметка времени 24 * 60 * 60

.getTime() // миллисекунды 24 * 60 * 60 * 1000

частный DateField dateField1; ///////////////////////

dateField1 = новый DateField ("Date:", DateField.DATE); f.append (dateField1);

Дата d = новая дата(); dateField1.setDate (д);

String TimeSeg ​​= String.valueOf (((dateField1.getDate(). GetTime()/1000) +64800));