Конвертировать время Ruby в глобальную строку даты и времени HTML5 - PullRequest
4 голосов
/ 30 ноября 2010

Как в Ruby преобразовать Fixnum 1291132740128 (миллисекунды с начала эпохи) в эквивалентную глобальную строку времени и даты HTML5 (см. Также объяснение элемента времени HTML5 . Например, 1979-10-14Т12: 00: 00.001-04: 00)?

Моя первая попытка:

> Time.at(1291132740128/1000.0).strftime("%Y-%m-%dT%H:%M:%S-%Z")
=> "2010-11-30T10:59:00-EST"

Но, (1) как я могу получить миллисекунды? Хранит ли Time миллисекунды?
И (2) как мне установить часовой пояс на -0400 или -0500, в зависимости от того, летнее ли это время?

РЕДАКТИРОВАТЬ: Теперь, когда я думаю об этом, возможно, лучше оставить его как 1291132740128 и выполнить преобразование с помощью JavaScript в соответствии с местоположением браузера. Что ты думаешь?

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Миллисекунды не отображаются, но вы можете попробовать это:

Time.at(1291132740128/1000.0).xmlschema
 => "2010-11-30T16:59:00+01:00"
1 голос
/ 30 ноября 2010

1) %3N в strftime даст вам миллисекунды:

Time.at(1291132740128/1000.0).strftime("%Y-%m-%dT%H:%M:%S.%3N-%Z")
=> "2010-11-30T16:59:00.128-CET"

2) Разве это не автоматически?

РЕДАКТИРОВАТЬ: Что произойдет, если пользователь имел егоJS выключен в этом случае?Я думаю, что это зависит от использования.

...