我的要求:
我在 EpochMillis 中获得值(value)
public void Method(){
//long val = epoch time in millis
//Format the (val)epochtime in MMddHHmmss and set ZoneOffset.UTC
//long formattedTime = formatted time;
obj.setTime(formattedTime);
}
最终目的是获取上述格式的格式化时间,结果应为“long”类型
我可以处理预期的数据,但结果是 String,在转换回 Long 时,前导零丢失了。 (我想将长度保留为 10 - 按照格式)
有人可以帮忙吗?
我在下面试过
final long timeInMillis = Instant.now().toEpochMilli();`
final Instant instant = Instant.ofEpochMilli(Long.valueOf(timeInMillis));`
final String formattedDate = DateTimeFormatter.ofPattern("MMddHHmmss").withZone(ZoneOffset.UTC).format(instant);
这里我只能得到字符串,我希望它是格式化的(长度为 10)
编辑1: 或者我需要任何其他想法。 我需要使用仅接受 Long 值的 Setter 方法将时间设置为 0803072816 [MM-dd-HH-mm-ss]。 没有格式化的长毫秒也可以 格式化程序长值或未格式化的时间(以毫秒为单位),在这两种情况下,长度都应恰好 = 10
最佳答案
对于计算机来说,像00012
这样的长数字(在内存中)等同于12
。它不关心前导 0。
只要我知道你不是电脑。所以你读的不是计算机编号,而是这个编号的视觉表示。 这种表示是一个字符串,可以有前导 0。
无论您对 long 值做什么,省略前导 0 都是完全正常的。 获得这些 0 的唯一方法是在需要显示时使用字符串格式化程序。
例如:String.format("%010d", myNumber)
编辑:我写了“00012
(在内存中)”,以免将它与字符串 “00012”
到 long
的转换混淆, 这是数字 10 的八进制表示
关于java - Java中的字符串到长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51669265/