迄今为止的长值c#

本文关键字:迄今为止 | 更新日期: 2023-09-27 17:59:21

我的服务器正在向我发送以下值13928550480000,我知道该值表示2014年2月19日。但我不知道如何从长期价值中得出日期。

我尝试了各种方法使用c#日期时间类将长时间转换为日期,但无法获得正确的日期,即2014年2月19日

        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");

迄今为止的长值c#

看起来您的源编号代表自1-1-1970以来0.10毫秒增量的数量(要么是这样,要么是打字错误):

    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
    

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

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

如果它真的是0000,那么它似乎是以100微秒为增量(每秒10000时间增量)测量时间。但它可能也会给你格林尼治标准时间,你希望从中得出当地时间。1970年1月1日的1392855048秒将是2014年2月20日午夜后10分48秒。根据您所在的时区,可能是当地时间2月19日。