我的服务器向我发送以下值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");
答案 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日的某个时间。