如何将微秒转换为时间戳?

时间:2010-09-19 03:05:55

标签: date time converter

我从一个未加密的.DAT文件中拿走了这篇文章:

代码:

00 e1 27 17 6f e6 69 c0

以十进制换算为63,374,851,375,000,000。该数字的单位是微秒。

这个巨大的数字无法绕过1970年1月1日的00:00:00格式;大多数转换器今天使用的格式。

所以,是的。是否有这样的转换器使用1年1月1日格式?或者我该怎么做?

顺便说一句,时间戳是日期和时间。

提前致谢!

3 个答案:

答案 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