我从一个未加密的.DAT文件中拿走了这篇文章:
代码:
00 e1 27 17 6f e6 69 c0
以十进制换算为63,374,851,375,000,000。该数字的单位是微秒。
这个巨大的数字无法绕过1970年1月1日的00:00:00格式;大多数转换器今天使用的格式。
所以,是的。是否有这样的转换器使用1年1月1日格式?或者我该怎么做?
顺便说一句,时间戳是日期和时间。
提前致谢!
答案 0 :(得分:2)
你没有说你使用的是哪种语言,如果它是.NET语言,你可以使用:http://msdn.microsoft.com/en-us/library/z2xf7zzk.aspx为那个构造函数输入是以纳秒为单位(你确定你的数字是以毫秒为单位而不是在纳秒?)。
如果您确定它是以毫秒为单位,则转换为纳秒应该很容易:1毫秒= 1 000 000纳秒。
但我觉得那些是纳秒而不是毫秒...
现在你告诉我们它是微秒:
C#示例从十进制到yyyy dd MM hh:mm:ss
long microseconds = 63370738175000000;
long ticks = microseconds * 10;
DateTime timestamp = new DateTime(ticks);
Console.WriteLine(timestamp.ToString("yyyy dd MM hh:mm:ss"));
打印:
2009 20 02 02:49:35
另一种方式从yyyy dd MM hh:mm:ss到decimal
String dateString = "2009 20 02 02:49:35";
DateTime timestamp = DateTime.ParseExact(dateString, "yyyy dd MM hh:mm:ss",CultureInfo.CurrentCulture);
long ticks = timestamp.Ticks;
long microseconds = ticks / 10;
Console.WriteLine(microseconds);
打印:
633706949.75亿
如果你想要十六进制,只需写:
Console.WriteLine(microseconds.ToString("X"));
然后会打印出来:
E1234FB3278DC0
如果您想要其他编程语言的答案,请将其添加到您的问题中。
答案 1 :(得分:1)
在JAVA中,为了将微秒转换为java.sql.Timestamp
:
public static Timestamp getTimestampFromMicros(long pMicros) {
long millis = TimeUnit.MICROSECONDS.toMillis(pMicros);
long shaaritInMicros = pMicros - TimeUnit.MILLISECONDS.toMicros(millis);
Timestamp ts = new Timestamp(millis);
long nanos = ts.getNanos() + TimeUnit.MICROSECONDS.toNanos(shaaritInMicros);
ts.setNanos((int)nanos);
return ts;
}
答案 2 :(得分:1)
使用以下Java代码将微秒转换为日期和时间,
long msec = microseconds * 1/1000;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormat.format(msec);
将返回, 2016-01-27 03:41:12