--- /dev/null 2016-05-17 12:01:17.473251102 +0900 +++ new/test/java/util/TimeZone/DefaultTimeZoneTest.java 2016-05-26 10:32:50.827538022 +0900 @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4296930 5033603 7092679 + * @summary Make sure that Java runtime detects the platform time zone + * correctly. Also make sure that the system time zone detection code + * detects the "Automatically adjust clock for daylight saving + * changes" setting correctly on Windows. + * @run applet/manual=yesno DefaultTimeZoneTest.html + */ + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.text.*; +import java.util.*; + +public class DefaultTimeZoneTest extends JApplet implements Runnable { + static final String FORMAT = "yyyy-MM-dd HH:mm:ss zzzz (XXX)"; + JLabel tzid; + JLabel label; + SimpleDateFormat sdf = new SimpleDateFormat(FORMAT); + JButton button = new JButton("English"); + Thread clock; + boolean english = false; + + @Override + public void init() { + tzid = new JLabel("Time zone ID: " + sdf.getTimeZone().getID(), SwingConstants.CENTER); + tzid.setAlignmentX(Component.CENTER_ALIGNMENT); + label = new JLabel(sdf.format(new Date()), SwingConstants.CENTER); + label.setAlignmentX(Component.CENTER_ALIGNMENT); + button.addActionListener(new ActionListener() { + @Override + @SuppressWarnings("deprecation") + public void actionPerformed(ActionEvent e) { + english = (english == false); + Locale loc = english ? Locale.US : Locale.getDefault(); + sdf = new SimpleDateFormat(FORMAT, loc); + button.setLabel(!english ? "English" : "Local"); + } + }); + button.setAlignmentX(Component.CENTER_ALIGNMENT); + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); + panel.add(Box.createRigidArea(new Dimension(0, 10))); + panel.add(tzid); + panel.add(Box.createRigidArea(new Dimension(0, 5))); + panel.add(label); + panel.add(Box.createRigidArea(new Dimension(0, 10))); + panel.add(button); + getContentPane().add(panel); + } + + @Override + public void start() { + clock = new Thread(this); + clock.start(); + } + + @Override + public void stop() { + clock = null; + } + + @Override + public void run() { + Thread me = Thread.currentThread(); + + while (clock == me) { + // Reset the default time zone so that + // TimeZone.getDefault will detect the platform time zone + TimeZone.setDefault(null); + System.setProperty("user.timezone", ""); + TimeZone tz = TimeZone.getDefault(); + sdf.setTimeZone(tz); + tzid.setText("Time zone ID: " + tz.getID()); + label.setText(sdf.format(new Date())); + repaint(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + } + } +}