我想在Java中将长int值转换为HH:MM格式 -1800000 - 04:00 -19800000 - 05 : 00
我突出显示了从代码中获得的int值。给出了实际值。我想编写代码将这些长整数值转换为HH:MM格式。真正的问题是,您和我都不知道这里需要哪种转换。我不能为你解决这个问题。不过,我想和大家分享一个想法,也许这会对你有所帮助我想在Java中将长int值转换为HH:MM格式 -1800000 - 04:00 -19800000 - 05 : 00,java,datetime,time,type-conversion,long-integer,Java,Datetime,Time,Type Conversion,Long Integer,我突出显示了从代码中获得的int值。给出了实际值。我想编写代码将这些长整数值转换为HH:MM格式。真正的问题是,您和我都不知道这里需要哪种转换。我不能为你解决这个问题。不过,我想和大家分享一个想法,也许这会对你有所帮助 DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); long longValue = -1_800_000; String formattedTime = Ins
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
long longValue = -1_800_000;
String formattedTime = Instant.ofEpochMilli(longValue)
.atZone(ZoneId.of("Asia/Kabul"))
.format(timeFormatter);
System.out.println(formattedTime);
这将打印预期的结果
04:00
我假设long值表示从纪元开始的毫秒,这是很常见的。它与亚洲/喀布尔和亚洲/德黑兰时区的当地时间一致,我不知道是否还有其他适合的时区
如果这个解释成立,我们将不得不假设另一个值中存在bug。我找不到一个时区,该值与05:00的时间相符。此外,如果这些值属于不同的时区,则除非它们告诉您它们属于哪个时区,否则就没有机会
public static String getDate(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
SimpleDateFormat month_date = new SimpleDateFormat("HH:MM");
String date = month_date.format(cal.getTime()).toString();
System.out.println(date);
return date;
}
这给了我答案,但有一个或两分钟的变化这些是24小时时钟格式,到目前为止你做了什么?这些长整型值是如何编码时间的?只有我知道的是这些整数的真实值,即一天中的一个时间是上午4点和上午5点,或者一个时间量是4小时和5小时,比如持续时间?现代java日期和时间API java.time以不同的方式处理这两种情况。如果是一天中的某个时间,在哪个时区?我怀疑这很重要。请不要教年轻人使用过时的、臭名昭著的、麻烦的SimpleDateFormat类。至少不是第一个选择。而且不是毫无保留的。今天我们有了更好的in和它的DateTimeFormatter。如果您坚持自己使用它,那么为分钟指定小写mm将有所帮助。请注意,根据运行程序的JVM的时区设置,结果会有所不同。