Java 从2015年3月3日格林尼治时间下午7:30:00到2015年8月6日18:53:50

Java 从2015年3月3日格林尼治时间下午7:30:00到2015年8月6日18:53:50,java,date,simpledateformat,Java,Date,Simpledateformat,使用Java 1.5或更早版本,将英国夏令时05-Aug-15 11:30 PM给定的时间转换为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

使用Java 1.5或更早版本,将英国夏令时05-Aug-15 11:30 PM给定的时间转换为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

您的第一个
DateFormat
包括
HH
,这意味着也是24小时。把它改成

DateFormat df1 = new SimpleDateFormat("dd-MMM-yy hh:mm aa z");
我还建议您为输出显式设置
时区(并创建
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);

可能重复的
这是正确的方法吗?
为什么不是正确的方法?如果它起作用,那就不是一个问题,如果它不能解释你的问题,那就不是一个问题。当我转换时,我似乎没有得到准确的24小时格式。
05-Aug-15 11:30 PM BST
2015-08-05T22:30:00Z