Дополнительно
Как преобразовать временную метку Unix в DateTime и наоборот?
Там есть пример кода, но потом он начинает говорить о проблемах миллисекунд/наносекунд.
Тот же вопрос есть на MSDN, Секунды с эпохи Unix в C#.
Вот что у меня есть на данный момент:
public Double CreatedEpoch
{
get
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
TimeSpan span = (this.Created.ToLocalTime() - epoch);
return span.TotalSeconds;
}
set
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
this.Created = epoch.AddSeconds(value);
}
}
707
18
Вот что вам нужно:
Или для Java (что отличается тем, что метка времени указывается в миллисекундах, а не в секундах):
В последней версии .Чистый (В4.6) добавил встроенную поддержку для преобразования Unix-время. Что включает в себя как и из Unix времени представляли либо секунд или миллисекунд.
типа DateTimeOffset
:<б>
Типа DateTimeOffset
в Unix-время в секундах:<б>
типа DateTimeOffset
:<б>
Типа DateTimeOffset
в Unix времени в миллисекундах:<б>
Примечание: эти методы преобразования от мирового
типа DateTimeOffset
. Чтобы получить представлениеДатавремя
просто использовать значения DateTimeOffset.UtcDateTimeили
типа DateTimeOffset.Свойства LocalDateTime`:Datetime в формате Unix:
Из Википедия:
Так что это мой код:
Будьте осторожны, если вам нужна точность выше, чем миллисекунды!
.Чистый (В4.6) методы (например, FromUnixTimeMilliseconds) Дон'т обеспечить эту точность.
AddSeconds и AddMilliseconds также отрезать микросекунд в двойном.
Эти версии имеют высокую точность:
В Unix -и GT; Датавремя
Датавремя -> в Unix
См IdentityModel.EpochTimeExtensions
В дополнение к ScottCher'ы ответ, я недавно обнаружил себя в раздражающей сценарий того, как секунды и миллисекунды в Unix метки времени произвольно смешиваются во входном наборе данных. Следующий код, кажется, справился с этим:
Преобразование Unix время новые .Net фреймворк 4.6.
Теперь вы можете легко конвертировать даты и значения времени или от .Чистая Framework и Unix время. Это может потребоваться, например, при преобразовании значения времени между JavaScript-клиента и .Чистый сервер. Следующие API были добавлены к структуры DateTimeOffset:
Я нашел правильный ответ, просто сравнив пересчет на 1/1/1970 без поправки на местное время;
// 1510396991
// [11.11.2017 10:43:11 +00:00]
Конечно, можно сделать unixEpoch
глобальный статический, поэтому его нужно только один раз в проекте, и можно использовать AddSeconds
если время Unix-время в секундах.Пойдем другим путем:
Усечь до int64 и/или использовать
TotalSeconds
по мере необходимости.Тик в Unix составляет 1 секунду (если я хорошо помню), а тик в .NET - 100 наносекунд.
Если у вас возникли проблемы с наносекундами, вы можете попробовать использовать AddTick(10000000 * value).
От .объем 4.6, вы можете сделать это:
Мне нужно, чтобы преобразовать время структура (секунды, микросекунды), содержащие
Unix время
доДатавремя
без потери точности и не'т нашли ответ здесь, так что я думал, я мог бы добавить от себя:Написал простое расширение, которое работает на нас. Если кто-то ищет его...
вы можете позвонить в UnixTime.UnixTimeToDateTime(двойной датавремя))
Для .Чистая 4.6 и выше: