【发布时间】:2018-08-03 09:16:10
【问题描述】:
我的要求:
我在 EpochMillis 中获得价值
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);
这里我只能得到字符串,我希望是格式化的 long(长度为 10)
编辑1: 或者我需要任何其他想法。 我需要使用仅接受 Long 值的 Setter 方法设置时间,例如 0803072816 [MM-dd-HH-mm-ss]。 以毫秒为单位的长而无需格式化也可以 格式化程序长值或未格式化时间(以毫秒为单位),在这两种情况下,长度都应该正好 = 10
【问题讨论】:
-
我不明白。您是想得到一个最后带有前导零(不可能)的
long变量,还是带有前导零的格式化字符串? -
前导零不是数学数字的一部分。它是装饰,因此只存在于
String之类的表示中。使用 formatter 显示带有前导零的数字。如果要解析前导零并记住它们,请使用自定义解析器。如前所述,数字本身没有前导零,因此它们丢失。 -
您的对象不应该使用
long作为日期和时间。就像您不应该使用int来保存字符或使用char来保存数字一样。这是错误的,它必然会混淆并且容易导致错误。使用来自java.time, the modern Java date and time API 的日期时间类,例如Instant。然后在需要显示时将其格式化为适合用户的字符串。
标签: java time java-8 java.time.instant