在 Java 中,我怎样才能打印出以秒和纳秒为单位的纪元以来的时间,格式如下:
java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
我的输入是:
long mnSeconds;
long mnNanoseconds;
其中两者的总和是自 epoch 以来经过的时间1970-01-01 00:00:00.0
。
在 Java 中,我怎样才能打印出以秒和纳秒为单位的纪元以来的时间,格式如下:
java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
我的输入是:
long mnSeconds;
long mnNanoseconds;
其中两者的总和是自 epoch 以来经过的时间1970-01-01 00:00:00.0
。
使用它并除以 1000
long epoch = System.currentTimeMillis();
System.out.println("Epoch : " + (epoch / 1000));
你可以这样做
public static String format(long mnSeconds, long mnNanoseconds) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
return sdf.format(new Date(mnSeconds*1000))
+ String.format("%09d", mnNanoseconds);
}
例如
2012-08-08 19:52:21.123456789
如果你真的不需要超过毫秒,你可以做
public static String format(long mnSeconds, long mnNanoseconds) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return sdf.format(new Date(mnSeconds*1000 + mnNanoseconds/1000000));
}
java.util.Date
类有一个接受纪元毫秒的构造函数。
检查java doc并尝试使用它。
这在一定程度上取决于您的 mnSeconds 和 mnNanoseconds 的值,但是您需要使用像这样的格式化程序(具有毫秒精度)来创建一个 java.util.Date。如果 mnNanoseconds 是您的 mnSeconds 之上的纳秒数,我会假设它类似于
Date d = new Date(mnSeconds*1000+mnNanosecods/1000000)
然后在打印之前使用格式化程序对其进行格式化。