Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想在Java中将长int值转换为HH:MM格式 -1800000 - 04:00 -19800000 - 05 : 00_Java_Datetime_Time_Type Conversion_Long Integer - Fatal编程技术网

我想在Java中将长int值转换为HH:MM格式 -1800000 - 04:00 -19800000 - 05 : 00

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

我突出显示了从代码中获得的int值。给出了实际值。我想编写代码将这些长整数值转换为HH:MM格式。

真正的问题是,您和我都不知道这里需要哪种转换。我不能为你解决这个问题。不过,我想和大家分享一个想法,也许这会对你有所帮助

    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的时区设置,结果会有所不同。