Java简单日期格式英国时间

DD.*_*DD. 4 java datetime

我使用简单的日期格式,允许用户指定他们发送数据的时区:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,z");
Run Code Online (Sandbox Code Playgroud)

这很好用:例如

df.parse("2009-05-16 11:07:41,GMT");
Run Code Online (Sandbox Code Playgroud)

但是,如果有人总是在伦敦时间发送时间(即考虑到夏令时),那么要添加的approriate时区字符串是什么?例如,这不起作用:

df.parse("2009-05-16 11:07:41,Western European Time");  
System.out.println(date);
Sat May 16 12:07:41 BST 2009
Run Code Online (Sandbox Code Playgroud)

我希望将英国时间与夏令时相匹配.

谢谢.

b.r*_*oth 5

在夏令时,它是BST.在今年余下的时间里GMT.

我建议您使用通用名称(全年),即Europe/London.你可以使用这样的东西:

    String userInput = "2009-05-16 11:07:41,Europe/London";
    String[] tokens = userInput.split(",");

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    df.setTimeZone(TimeZone.getTimeZone(tokens[1]));
    System.out.println(df.parse(tokens[0]));
Run Code Online (Sandbox Code Playgroud)

这种情况下的输出是:

Sat May 16 11:07:41 GMT+01:00 2009
Run Code Online (Sandbox Code Playgroud)


Jes*_*per 0

那么您的问题到底是什么 -TimeZone您应该使用什么 ID?以下将打印所有可用时区标识符的列表:

for (String id : TimeZone.getAvailableIDs()) {
    System.out.println(id);
}
Run Code Online (Sandbox Code Playgroud)