Да, он работает, все три значения, которые вы видите, являются временами файлов "в 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())