我的服务器正在向我发送以下值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");
看起来您的源编号代表自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日。