2017-01-21 7 views
-3

У меня очень странное поведение при извлечении часов и минут из объекта Date. моя первоначальная дата объекта отображается 2017-01-16T19: 00: 00. вот пример код:новый объект даты Javascript с 1 дополнительным часом

var dt = new Date(date); 
console.log("intial start date: "+date.format()); 
console.log("start date: "+dt); 

, но когда я создаю новый объект Date (DT) для извлечения часов и минуты, я могу видеть больше 1 часов от начального значения .... часовой пояс кажется правильными. ...

вот журналы:

intial start date: 2017-01-16T19:00:00 
start date: Mon Jan 16 2017 20:00:00 GMT+0100 (Romance Standard Time) 
start date hours: 20 Minutes: 0 

на самом деле я просто хочу, чтобы извлечь часы и минуты с момента, как я могу сделать это с правильным час и минуты?

+0

«часовой пояс кажется правильным» - часовой пояс отличается от того, который вы установили в дату ISO. – Quentin

+0

Но я не указываю какой-либо часовой пояс в объекте dt2 ... – tiamat

+0

Вам нужно решить, какой час вы считаете правильным: местный час или часовой пояс UTC. – trincot

ответ

2

Видимо вы используете fullCalendar, в котором используются даты Moment. Поэтому, когда вы вызываете .format(), вы вызываете метод, определенный Moment. documentation on that method говорит:

В версии 1.5.0, называя moment#format без формата по умолчанию будет moment.defaultFormat. Из коробки, moment.defaultFormat Является ли ISO8601 Отформатируйте YYYY-MM-DDTHH:mm:ssZ

Таким образом, не определяя аргумент для .format(), дата/время отображаются в часовом поясе GMT ​​00:00, что не твое. Чтобы решить эту проблему, укажите аргумент формата, например:

date.format('DD/MM/YYYY HH:mm:ss')