关于日期:如何将微秒转换为时间戳?

How do I convert microseconds into a timestamp?

我从一个未加密的.dat文件中获取了这篇文章:

代码:

00 e1 27 17 6f e6 69 c0

即十进制数63374851370000。数字的单位是微秒。

这个巨大的数字不能绕过1970年1月1日00:00:00格式,这是大多数转换器现在使用的一种格式。

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

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

事先谢谢!


您没有说您使用的是什么语言,如果是.NET语言,则可以使用:http://msdn.microsoft.com/en-us/library/z2xf7zzk.aspx对于该构造函数,输入以纳秒为单位(您确定您的数字是以毫秒为单位而不是以纳秒为单位吗?).

如果您确定它是以毫秒为单位的,那么到纳秒的转换应该很容易:1毫秒=1000 000纳秒。

但我觉得这些是纳秒而不是毫秒…

既然你已经告诉我们它是以微秒为单位的:

C十进制到YYYY-DD-MM hh:mm:ss的示例

1
2
3
4
5
6
<wyn>
long microseconds = 63370738175000000;            
long ticks = microseconds * 10;
DateTime timestamp = new DateTime(ticks);
Console.WriteLine(timestamp.ToString("yyyy dd MM  hh:mm:ss"));
</wyn>

它打印:

2009年2月20日02:49:35

从yyyy-dd-mm hh:mm:ss到decimal的另一种方法

1
2
3
4
5
6
7
<wyn>
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);
</wyn>

它打印:

6337069497500万

如果你想要十六进制的,只需写:

1
2
3
<wyn>
Console.WriteLine(microseconds.ToString("X"));
</wyn>

然后打印:

E1234FB3278DC0

如果你想用另一种编程语言来回答,请把这个问题加到你的问题上。


使用Java代码将微秒隐藏到日期和时间,

1
2
3
   long msec = microseconds * 1/1000;
   DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
   dateFormat.format(msec);

会回来的,2016年1月27日03:41:12


在爪哇中,为了将微秒转换成EDOCX1,0:

1
2
3
4
5
6
7
8
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;
}