Формат даты GroupWise 2014 в DateTime
Я работаю с GroupWise 2014 Rest API, и у меня возникла проблема с анализом их формата даты.
Когда вы выбираете пользователя, вы получаете объект json с timeCreated: 1419951016000
,
Но я не могу понять, в каком формате эта дата.
я пробовал
DateTime.Parse
DateTime.FromFileTime
DateTime.FromFileTimeUtc
Значение 1419951016000
должно быть около времени 2014-12-30 15:50
1 ответ
Похоже, Unix время в миллисекундах с 1 января 1970 года в UTC. Текущее время Unix в секундах показано здесь как 1419964283.
Чтобы преобразовать в DateTime
чтобы узнать время UNIX, смотрите здесь: Как преобразовать метку времени UNIX в DateTime и наоборот?, Этот код работает в течение unix времени в секундах; следующие работы для времени Unix в миллисекундах, представленные в виде long
:
public static class UnixTimeHelper
{
const long MillisecondsToTicks = 10000;
static readonly DateTime utcEpochStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
static DateTime UtcEpochStart { get { return utcEpochStart; }}
public static DateTime ToDateTime(long unixTimeInMs, DateTimeKind kind)
{
var dateTime = UtcEpochStart + new TimeSpan(MillisecondsToTicks * unixTimeInMs);
if (kind == DateTimeKind.Local)
dateTime = dateTime.ToLocalTime();
return dateTime;
}
public static long ToUnixTimeInMs(DateTime dateTime)
{
if (dateTime.Kind == DateTimeKind.Local)
dateTime = dateTime.ToUniversalTime();
var span = dateTime - UtcEpochStart;
return (long)(span.Ticks / MillisecondsToTicks);
}
}
С этим кодом. UnixTimeHelper.ToDateTime(1419951016000, DateTimeKind.Utc).ToString()
дает значение "30.12.2014 14:50:16". Ваше желаемое значение "2014-12-30 15:50" в UTC или по местному времени?
Если вы используете Json.NET для сериализации JSON, вы можете написать JsonConverter
сделать преобразование автоматически из DateTime
Свойство, используя инструкции здесь: Написание собственного Json.NET DateTime Converter. Этот код также работает в течение unix времени в секундах, поэтому его необходимо настроить.
(Наконец, поддерживая предложение Plutonix о повторной проверке документации. В частности, вам необходимо прочитать то, что в документации говорится о часовом поясе, в котором возвращается время. Вероятно, это UTC, но стоит убедиться в этом.)
Обновить
После быстрого поиска онлайн-документ выглядит довольно плохо, но на этой странице упоминается
Истекает время
долго
Необязательный. Используйте явное время истечения срока годности. Время указывается как Java долгое время.
java.util.Date
представляет "указанное число миллисекунд с момента стандартного базового времени, известного как" эпоха ", а именно 1 января 1970 года, 00:00:00 по Гринвичу" как long
,