DateTime.toFileTimeUtc действительно работает? Я не могу произвести файловое время в формате UTC - PullRequest
1 голос
/ 09 марта 2012

Я заметил, что независимо от того, что я делаю, tofiletimeutc() всегда возвращает то же, что и toFileTime(). Мне нужно произвести метку времени UTC. Поэтому я попробовал этот эксперимент в Powershell:

(get-date).tofiletime();
(get-date).touniversalTime().tofiletimeutc();
(get-date).tofiletimeutc();

и вывод:

129757574870723241
129757574870723241
129757574870723241

(Все 3 являются идентичными местными временными метками. Часовой пояс установлен в Тихоокеанском регионе).

(get-date).touniversalTime() работает как положено, но независимо от того, какую функцию «to-utc» я использую, она по какой-то причине преобразуется обратно в местное время. Кто-нибудь видит, что происходит?

1 Ответ

1 голос
/ 09 марта 2012

Да, он работает, все три значения, которые вы видите, являются временами файлов "в UTC".

Справочная информация:

Windows FILETIME определяется как : «64-битное значение, представляющее количество интервалов в 100 наносекунд с 1 января 1601 года (UTC)».

И DateTime.ToFileTime(), и DateTime.ToFileTimeUtc() возвращают значение на основе UTC. Фактически, DateTime.ToFileTime() реализован как DateTime.ToUniversalTime().ToFileTimeUtc().

Обновление По поводу комментариев:

Значение всегда одинаково, как сказано выше, что вы «видите» при преобразовании его обратно в экземпляр DateTime и сбросе того, какой метод вы используете:

Эти два возвращают «одинаковое» значение DateTime с DateTimeKind.Utc и значение DateTime, «скорректированное» до UTC.

[datetime]::FromFileTimeUtc((get-date).ToFileTime())
[datetime]::FromFileTimeUtc((get-date).ToFileTimeUtc())

Эти два возвращают «одинаковое» значение DateTime с DateTimeKind.Local и значением DateTime, настроенным на местное.

[datetime]::FromFileTime((get-date).ToFileTime())
[datetime]::FromFileTime((get-date).ToFileTimeUtc())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...