Как мне изменить часовой пояс DateTime в Ruby?

Безопасность не является единственной проблемой; просто, сериализация только имеет смысл для определенных классов. Например, это делает мало snse для сериализации "соединения". Соединение строка , уверенный, но само соединение? nah. Аналогично, что-либо, что требует неуправляемого указателя/дескриптора, не собирается сериализировать очень хорошо. Ни делегаты.

Кроме того, XmlSerializer и DataContractSerializer (по умолчанию) дерево сериализаторы, не график сериализаторы - таким образом, любые рекурсивные ссылки (как Parent) заставят его повреждаться.

отмечание класса с предпочтительным маркером сериализатора является просто способом сказать, "и это должно иметь смысл".

IIRC, и [XmlSerializer и [DataContractSerializer] использовал , чтобы быть очень тверд о требовательных вещах как [Serializable], [DataContract] или [IXmlSerializable], но они стали немного более либеральными в последнее время.

25
задан Daniel Beardsley 17 December 2010 в 20:23
поделиться

1 ответ

Я бы использовал объект Time вместо этого. Так что получите текущее местное время, затем увеличьте его на смещение UTC и преобразуйте в UTC, например, так:

t = Time.now # or Time.parse(myDateTime.asctime)
t # => Thu Dec 16 21:07:48 -0800 2010
(t + t.utc_offset).utc # => Thu Dec 16 21:07:48 UTC 2010

Хотя, согласно комментарию Phrogz, если вы просто хотите хранить временные метки в независимом от местоположения виде, то просто используйте текущее время UTC:

Time.now.utc
9
ответ дан 28 November 2019 в 18:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: