小编典典

将时代时间转换为日期

java

我已经尝试过一百万种不同的方法,但是没有用。任何帮助将非常感激。

long millis = getMillisFromServer();
Date date = new Date(millis);
DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("Australia/Sydney"));
String formatted = format.format(date);

上面的方法不起作用。

基本上,我想做的是获取纪元时间并将其转换为澳大利亚时间。我的当地时间是+05.30,但是我当然不希望这成为促成这种转化的因素。

编辑-

当我运行您的确切代码时,输​​出

时代1318388699000

2011年10月12日星期三08:34:59 GMT + 05:30

12/10/2011 03:04:59

12/10/2011 14:04:59


阅读 210

收藏
2020-09-16

共1个答案

小编典典

编辑:好的,所以您不希望您的 当地时间 (不是澳大利亚)为结果做出贡献,而是希望您选择澳大利亚时区。这样,您现有的代码就可以了,尽管悉尼目前是UTC
+ 11
,而不是UTC +
10。。简短而完整的测试应用程序:

import java.util.*;
import java.text.*;

public class Test {
    public static void main(String[] args) throws InterruptedException {
        Date date = new Date(1318386508000L);
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
        String formatted = format.format(date);
        System.out.println(formatted);
        format.setTimeZone(TimeZone.getTimeZone("Australia/Sydney"));
        formatted = format.format(date);
        System.out.println(formatted);
    }
}

输出:

12/10/2011 02:28:28
12/10/2011 13:28:28

我还建议您开始使用Joda Time,它只是一个更好的日期/时间API …

编辑:请注意,如果你的系统不知道的Australia/Sydney时区,它
显示UTC。例如,如果我更改将要使用的代码TimeZone.getTimeZone("blah/blah"),它将两次显示UTC值。我建议您打印TimeZone.getTimeZone("Australia/Sydney").getDisplayName()并查看其内容…并检查您的代码是否有错别字:)

2020-09-16