从格林威治标准时间03-Mar-15 7:30:00到2015-08-06 18:53:50

时间:2015-08-06 18:40:01

标签: java date simpledateformat

使用Java 1.5或更早版本将最佳方式转换为05年8月15日11:30 BST至2015-08-06 18:53:50Z的时间。

我的代码如下:

    String ts = "05-Aug-15 11:30 PM BST";
    DateFormat df1 = new SimpleDateFormat("dd-MMM-yy HH:mm aa z");
    Date myDate = df1.parse(ts);


    String myd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(myDate);
    System.out.println(myd);
  

2015-08-05T11:30:00Z

这是从BST到UTC / Zulu的正确方法吗?

另一个问题是原始时间是在12:00 AM / PM,但我想在24小时内完成。 这就是我得到的:

 05-Aug-15 10:30 PM BST New Date:2015-08-05T10:30:00Z
 05-Aug-15 10:30 AM BST New Date:2015-08-05T10:30:00Z

1 个答案:

答案 0 :(得分:1)

您的第一个DateFormat包含HH,这意味着它也是24小时。将其更改为

DateFormat df1 = new SimpleDateFormat("dd-MMM-yy hh:mm aa z");

我还建议您为输出明确设置TimeZone(并创建df2)。像,

String ts = "05-Aug-15 11:30 PM BST";
DateFormat df1 = new SimpleDateFormat("dd-MMM-yy hh:mm aa z");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
df2.setTimeZone(TimeZone.getTimeZone("UTC"));
Date myDate = df1.parse(ts);
System.out.println(df1.format(myDate)); // <-- this is how I saw it
String myd = df2.format(myDate);
System.out.println(myd);

输出

05-Aug-15 11:30 PM BST
2015-08-05T22:30:00Z