获取时间戳并将其转换为字符串

7
我正在使用这个代码获取当前时间戳(以秒为单位),并将其添加到一个字符串中:Double.toString((System.currentTimeMillis()/1000))。但是,与其使用十进制表示相反,我得到的是"1.23213E9"。如何切换到十进制表示?
4个回答

10

最短的代码是:

String secs = "" + System.currentTimeMillis() / 1000;

如果您想保留毫秒,可以使用以下代码

String secs = String.format("%.3f",  System.currentTimeMillis() / 1000.0);

生成一个类似于字符串的字符串

1342604140.503

2
如果您需要高精度,请将其转换为秒,如(double)System.currentTimeMillis() / 1000,并结合@Dario发布的NumberFormat示例。 - rineez

10

试试这个:

TimeUnit.MILLISECONDS.toSeconds(((System.currentTimeMillis());

1
除了更易读之外,我不确定这段代码是否比Peter Lawrey的帖子有任何优势。 - rineez
2
@rineez:这就是我们所说的重复利用。为什么要重新做已经完成的事情呢? - Mohayemin
1
@Mohayemin 我同意代码重用的观点。但请注意此方法可能会导致精度损失。对于那些只需要一个四舍五入值的人来说,这种方法可能是完美的。 - rineez
@rineez 很可能你想在表示那个时间范围内的某些东西时使用秒,并且小数变得“不重要”。就像你不会说瑞典的长度是1572.232公里,而是会说1572公里或1572232米。 - Viktor Mellgren

7
String.valueOf(System.currentTimeMillis() / 1000)

那应该可以解决问题了?无需将其转换为双精度数。

1
如果您需要处理一个Double,您可以像这样做:
double myNum = 1.23213E9;
String myString = NumberFormat.getInstance().format(myNum);
System.out.print(myString);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接