GroupWise 2014 日期格式为日期时间

本文关键字:日期 时间 格式 GroupWise 2014 | 更新日期: 2023-09-27 18:35:38

我正在使用 GroupWise 2014 Rest API,解析它们的日期格式时遇到问题。

当你获取一个用户时,你会收到一个带有"timeCreated"的json对象:1419951016000

但是我不知道那个日期是什么格式。

我试过了

DateTime.Parse
DateTime.FromFileTime
DateTime.FromFileTimeUtc

1419951016000的值应该在时间2014-12-30 15:50

GroupWise 2014 日期格式为日期时间

看起来像自

1970 年 1 月 1 日 UTC 以来的 unix 时间(以毫秒为单位)。 当前 unix 时间(以秒为单位)在此处显示为 1419964283。

要将DateTime转换为 unix 时间,请参阅此处:如何将 UNIX 时间戳转换为日期时间,反之亦然?。 该代码适用于以秒为单位的 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()给出值"12/30/2014 2:50:16 PM"。 您希望的值是 UTC 还是当地时间的"2014-12-30 15:50"?

如果使用 Json.NET 序列化 JSON,则可以编写自定义JsonConverter以使用此处的说明从 DateTime 属性自动执行转换:编写自定义 Json.NET 日期时间转换器 。 该代码也适用于以秒为单位的 unix 时间,因此需要进行调整。

(最后,支持Plutonix的建议,仔细检查文档。 特别是,您需要阅读文档中有关返回时间的时区的内容。 它可能是UTC,但确保是值得的。

更新

快速搜索后,在线文档看起来很糟糕,但此页面提到了

过期时间

自选。使用明确的过期截止时间。该时间被指定为 java long 时间。

java.util.Date表示"自称为"纪元"的标准基准时间(即 1970 年 1 月 1 日 00:00:00 GMT)以来指定的毫秒数"作为long