Java 将毫秒转换为日期字符串

Java 将毫秒转换为日期字符串,java,datetime,simpledateformat,datetime-conversion,Java,Datetime,Simpledateformat,Datetime Conversion,我尝试将毫秒转换为日期字符串。然而,结果并不像我预期的那样正确 输入为毫秒Ex:1508206600485 我的时区是UTC+10:00 这里是方法 public static String getDate(long milliSeconds) { SimpleDateFormat formatter = new SimpleDateFormat("hh:mm dd/MM/yyyy"); String dateString = formatter.format(new Date(

我尝试将毫秒转换为日期字符串。然而,结果并不像我预期的那样正确

输入为毫秒Ex:1508206600485

我的时区是UTC+10:00

这里是方法

public static String getDate(long milliSeconds) {
    SimpleDateFormat formatter = new SimpleDateFormat("hh:mm dd/MM/yyyy");
    String dateString = formatter.format(new Date(milliSeconds));
    return dateString;
}

基于@phlaxyr,我已经解决了我的问题。你可以在下面的链接中找到你的时区

很好,我只是想用Java8添加一种方法。旧的类Date、Calendar和SimpleDateFormat具有和,如果可能,强烈建议切换到新的API


如果您使用的是Java,那么输入是什么?代码运行在哪个时区?输入是毫秒,但实际数字是多少?你的时区是什么?或者更重要的是,您的计算机上的区域设置是什么时区?我不知道有时区,所以我如何知道我的时区是什么?我得到11:16 17/10/2017这是解决此问题的正确方法。我仍然想知道1为什么OP的预期输出是下午1:32,2为什么OP的时区一开始就不正确。您的解决方案没有解决这些问题;但我在这里投了更高的票,因为这是最好的展示给将来偶然发现这个问题的人。@DawoodibnKareem第1项,我想这可能是一个打字错误或操作,实际上是用另一个输入值测试的。第2项,我根据OP自己的回答说,悉尼时区解决了问题-可能没有考虑DST,因为悉尼在不使用DST时实际使用+10:00偏移量。或者他们的JVM默认时区被设置为另一个,谁知道呢……是的,可能。我想投票结束这个问题,因为这个问题无法重现,当然也包括打字错误。然而,你现在的回答使这个问题值得保留。
public static String getDate(long milliSeconds) {
    SimpleDateFormat formatter = new SimpleDateFormat("hh:mm dd/MM/yyyy");
    String dateString = formatter.format(new Date(milliSeconds));
    return dateString;
}
public static String getDate(long milliSeconds) {
    SimpleDateFormat formatter = new SimpleDateFormat("hh:mm dd/MM/yyyy");
    formatter.setTimeZone(TimeZone.getTimeZone("Australia/Sydney"));
    String dateString = formatter.format(new Date(milliSeconds));
    return dateString;
}
// convert millis value to a timezone
Instant instant = Instant.ofEpochMilli(1508206600485L);
ZonedDateTime z = instant.atZone(ZoneId.of("Australia/Sydney"));
// format it
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("hh:mm dd/MM/yyyy");
System.out.println(fmt.format(z)); // 01:16 17/10/2017