到目前为止的长期值c#

时间:2014-04-22 22:06:32

标签: c# datetime

我的服务器向我发送以下值13928550480000,我知道它代表日期02/19/2014。但是我无法弄清楚如何从长值中找到日期。

我尝试了使用c#日期时间类进行长期转换的各种方法,但无法到达正确的日期,即02/19/2014

        long dateL = 13928550480000;
        DateTime dt = new DateTime(dateL);
        var dtstr = dt.ToString("MM/dd/yyyy");

        var onlyDate = dt.Date;

        DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        DateTime date = start.AddMilliseconds(dateL).ToLocalTime();
        var dtstr1 = date.ToString("MM/dd/yyyy");

2 个答案:

答案 0 :(得分:1)

看起来你的源编号代表自1-1-1970以来增加10 ms的数量(无论是那个还是错字):

    long dateL = 13928550480000;

    DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    DateTime date = start.AddMilliseconds(dateL/10).ToLocalTime();
                                         //    ***
                                         //     ^------

    var dtstr1 = date.ToString("MM/dd/yyyy");  // 02/19/2014

我怀疑时区差异与您的问题无关。

答案 1 :(得分:1)

你的大号末尾是否写了太多的零?也就是说,它真的在0000结束而不仅仅是000?

如果确实是0000,那么它似乎是以100微秒的增量(每秒10,000次增量)测量时间。但它可能也给你时间在GMT,你期望从中获得当地时间。从1970年1月1日起1392855048秒的时间是2014年2月20日午夜过后10分48秒。根据您的时区,可能是当地时间2月19日的某个时间。