Java 将GMT时间格式化为GMT+01:00时,将添加一个额外的小时

Java 将GMT时间格式化为GMT+01:00时,将添加一个额外的小时,java,locale,jodatime,simpledateformat,Java,Locale,Jodatime,Simpledateformat,我面临的问题是,只有在格林尼治时间+01:00形成后,时间才会增加一小时 我是这样做的: private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { // Change Start date according to the Locale time formattor.setTimeZone(T

我面临的问题是,只有在格林尼治时间+01:00形成后,时间才会增加一小时

我是这样做的:

private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                       

    try {
        // Change Start date according to the Locale time
        formattor.setTimeZone(TimeZone.getTimeZone("GMT"));
        date1 = formattor.parse("2015-03-26 11:17:41");
        formattor.setTimeZone(TimeZone.getDefault());

        String start = formattor.format(date1);

        // Change End date according to the Locale time
        formattor.setTimeZone(TimeZone.getTimeZone("GMT"));
        date1 = formattor.parse("2015-03-26 13:17:00");
        formattor.setTimeZone(TimeZone.getDefault());

        String end = formattor.format(date1);

        System.out.println(start + " - " + end);
    } catch (ParseException e) {
        e.printStackTrace();
    }
输出:

2015-03-26 12:17:41 - 2015-03-26 14:17:00
我在Joda Time上也面临着同样的问题


我已经用GMT+01:00,西非标准时间对它进行了测试,这是非常明显的,因为您的getDefault会将时区设置为GMT+01:00,因此您会看到相同的结果。如果这不是你所期望的,重新思考这个问题

这是意料之中的:如果格林尼治标准时间是11:17:41,那么格林尼治标准时间+1是12:17:41。这就是GMT+1的意思。您希望输出什么?为什么?为什么您认为这是错误的?格林尼治标准时间的11:17与格林尼治标准时间的12:17+01:00相同。你怎么没想到呢?看起来不错。在输出中包括TZ偏移量,这将有助于可视化问题。输出时间应该是GMT输入的+1。抱歉,我认为我需要更新问题。或者删除它。这是毫无疑问的。