java - Java中的字符串到长

标签 java time java-8 java.time.instant

我的要求:

我在 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/

相关文章:

php:将毫秒转换为日期

C++ UnixTimestamp 和可读时间格式

java - 使用java流,将两个具有相同键但不同值的映射合并到一个元组中?

java - IntelliJ IDEA 2019 运行 Java 11(构建 Gradle 项目时),即使每个选项都设置为 Java 8?

java - 兴趣点 : How to validate empty cells in a range

java - 使用空字符作为循环条件,程序在应该循环时结束

java - 将毫秒格式化为 simpledateformat

java - 如何使用Junit测试对象是否被修改?

java - 隐式与显式数据结构

javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie ,有什么区别?