C# 迄今为止的长期价值#

C# 迄今为止的长期价值#,c#,datetime,C#,Datetime,我的服务器正在向我发送以下值139285048000,我知道该值代表2014年2月19日的日期。但我无法从长期价值中得出日期 我尝试了使用c#date time类将long转换为date的各种方法,但未能找到正确的日期,即2014年2月19日 long dateL = 13928550480000; DateTime dt = new DateTime(dateL); var dtstr = dt.ToString("MM/dd/yyyy");

我的服务器正在向我发送以下值139285048000,我知道该值代表2014年2月19日的日期。但我无法从长期价值中得出日期

我尝试了使用c#date time类将long转换为date的各种方法,但未能找到正确的日期,即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");

看起来您的源编号代表自1970年1月1日以来10毫秒增量的数量(要么是该数字,要么是输入错误):


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

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


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

“我知道它代表的是2014年2月19日”怎么说?转换公式是什么?可能与weblogic服务器重复。我有办法验证它,但无法访问公式。你如何验证它?你能重复使用代码吗?@Tawnos他使用的是答案代码,它不起作用,所以不是重复的。尝试使用1392855048000。如果你从1392855048000(四个零)开始,然后忘记在指定的位置除以10,你将得到5/18/2411。我想D Stanley的答案中的代码与我刚才说的是一样的。
    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