S-JIS[2008-02-16/2017-09-27] �ύX����
Java�œ��t�⎞���������N���X�ɂ��āB��JDK1.8�ȍ~�����t����API�ijava.time�j���g���B
|
|
|
System�N���X�ɁA���ݎ����iUTC�j�ɓ�����l��long�^�̐����ŕԂ����\�b�h������B[2008-07-05]
| ���\�b�h�� | ���� |
|---|---|
| currentTimeMillis() | �P�ʂ̓~���b�B ���������x��10�~���b���x�i10�~���b�Ԋu�̐��l�����Ԃ��Ȃ��BOS�ˑ��ł���AWindowsXP����16�~���b���炢�ȋC������j�B |
| nanoTime() | �P�ʂ̓i�m�b�BJDK1.5�ȍ~�B ���ԊԊu�i�o�ߎ��ԁj�𑪂�̂ɂ����g���Ȃ��B |
long s = System.nanoTime();
�`
long e = System.nanoTime();
System.out.printf("�o�ߎ��ԁF%d�i�m�b%n", e - s);
TimeUnit�́A�P�ʂ����Ԃ�\���^�BJDK1.5�Œlj����ꂽ�B[2008-07-30]
| �� | ���� | �Q�l |
|---|---|---|
TimeUnit.SECONDS.toMillis(�b) |
�b���~���b�ɕϊ�����B | Timer#schedule() |
TimeUnit.MILLISECONDS.toSeconds(�~���b) |
�~���b��b�ɕϊ�����B | �b�P�ʂ̌o�ߎ��� |
TimeUnit.SECONDS.sleep(�b) |
�b�P�ʂŃX���[�v����B | Thread.sleep() |
TimeUnit.NANOSECONDS.sleep(�i�m�b) |
�i�m�b�P�ʂŃX���[�v����B |
Java9�ŁA���t����API��ChronoUnit�ɕϊ����郁�\�b�h���lj����ꂽ�B[2017-09-27]
import java.time.temporal.ChronoUnit; import java.util.concurrent.TimeUnit;
ChronoUnit seconds = TimeUnit.SECONDS.toChronoUnit(); // ChronoUnit.SECONDS
TimeUnit seconds = TimeUnit.of(ChronoUnit.SECONDS); // TimeUnit.SECONDS
java.util.Date�́AJava�œ�����ێ�����N���X�BDate�i���t�j�Ƃ������O�����ǁA�������ێ��ł���B�^�C���]�[���͕ێ�����Ȃ��iUTC�ł���j�B �i��JDK1.8��LocalDateTime�j[/2016-05-30]
import java.util.Date;
Date now = new Date(); //���ݓ�����Date���쐬 Date now = new Date(System.currentTimeMillis()); //�����Ԃ͂���
Date�N���X�ɂ͔N������N���������b�������ɂƂ�R���X�g���N�^�[������i�������j���A���݂�deprecated�ɂȂ��Ă���ACalendar�N���X��DateFormat�N���X���g���ē���̓������쐬����̂���������Ă���B
�܂��A�N�E���E���E�����ڎw�肵����擾�����肷�郁�\�b�h������i�������j���A���݂�Calendar�N���X���g�����Ƃ���������Ă���B
toString()�ŁA�ێ����Ă����������ɂ��ďo�͂��邱�Ƃ��o����B
�������o�͂������e�́A���{�l���猩��Ƃ��܂茩�₷���Ȃ��B���`��DateFormat�N���X���g���B
������������Ƃ����f�o�b�O�ŏo�͂������Ȃ�AtoString()�ŏ[���B
System.out.println(now);
Sat Feb 16 01:48:45 JST 2008
java.util.Date���g���^�C���]�[����ێ����Ă��Ȃ��iUTC�ł���j�B[2016-05-30]
�������AtoString()�ł��f�t�H���g�^�C���]�[�����擾���āA���̃^�C���]�[���̒l���o�͂����B�i��L�̗��JST�ƕ\������Ă���̂́A���{�̃p�\�R���Ŏ��s��������j
���ɂ͂Ȃ��Ă��邪�AtoGMTString()���g���ƁAGMT�i��UTC�j�̒l���o�͂����B
java.sql.Date��Java��DB�֘A�̕W���N���X�Ȃ̂ŁADB�������Ă���Ƃ悭�o�Ă���B
java.sql.Date��java.util.Date���p�����Ă���̂ŁAjava.util.Date�Ƃ��Ĉ������Ƃ��o����B
�N���X����Date�Ȃ̂�java.util.Date�Ƃ܂���킵���̂ŗv���ӁB
���ɂǂ����import���Ă���̂����悭�C�ɂ���K�v������B�i2��������import���邱�Ƃ͏o���Ȃ��j
import java.sql.Date;
Date sqlNow = new Date(System.currentTimeMillis());
java.util.Date utilDate = sqlNow; //java.util.Date����h�����Ă���̂ŁA�L���X�g�������ł�����ł���
Date sqlDate = new Date(utilDate.getTime());
DateFormat�͓��t�̏����������N���X�B
Date�𐮌`���ĕ�����ɕϊ�������A������Date�C���X�^���X���������o����B
�i��JDK1.8��DateTimeFormatter�j
��̓I�ɂ�SimpleDateFormat�������������w�肵�ăC���X�^���X�����Aparse()��format()���g���ĕϊ�����B
������Date�i�G���[����ParseException�������j�F
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date date = df.parse("2008/02/16");
// Date date = df.parse("2008/2/1"); //���ꂭ�炢�Ȃ�G���[�ɂȂ炸����ɕϊ������
// Date date = df.parse("2008:02:16"); //ParseException����������
DateFormat#setLenient(false)���ĂԂƌ����Ƀ}�b�`���邩�`�F�b�N�����悤�ɂȂ�A�B���ȏ�Ԃ̓G���[�ɂȂ�B[2009-02-04]
������Date�i�G���[���̓G���[�ʒu��Ԃ��j�F
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
ParsePosition pos = new ParsePosition(0);
Date date = df.parse("2008/02/16", pos);
System.out.println(pos.getErrorIndex()); //����I���Ȃ�G���[�ʒu��-1
pos = new ParsePosition(0);
date = df.parse("2008:02/16", pos);
System.out.println(pos.getErrorIndex()); //�G���[���̓G���[�̂������ʒu�i���̗Ⴞ��4�j
Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
System.out.println(df.format(date));
�������̃p�^�[�������́ASimpleDateFormat��Javadoc�ɏڍׂ��ڂ��Ă���B
SimpleDateFormat�iDateFormat�j���^�C���]�[����ێ����Ă���B[2016-05-30]
�^�C���]�[����ς������ꍇ��setTimeZone()���g���B
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
System.out.println(sdf.format(date));
Date����ɕϊ��iformat�j����Ƃ��́A�iDate���g�̓^�C���]�[����ێ����Ă��Ȃ��̂ŁjDateFormat���ێ����Ă���^�C���]�[�������ɕϊ������B
������Date�ɕϊ��iparse�j����Ƃ��́A���̕������DateFormat���ێ����Ă���^�C���]�[���̓����Ƃ��Ĉ�����B
�Ȃ��ASimpleDateFormat��MT�Z�[�t�ł͂Ȃ��̂ŁA�}���`�X���b�h�Ŏg���ꍇ�ɂ͒����B
�iDateFormat�Ɍ��炸�A����Format�n�N���X���j
�Q�l�F AKIMOTO, Hiroki�����SimpleDateFormat
�̓X���b�h�Z�[�t�ł͂Ȃ�
���Ȃ݂ɂ����ł�Date#toString()����Ȃ��Ə����Ă��邪�A����������JDK1.3�̘b����Ȃ��낤���B
JDK1.4�ł�SimpleDateFormat���g���ۂ�synchronized���Ă邩����v�Ȃ�Ȃ����Ȃ��H
JDK1.5��1.6�ł�DateFormat���g�킸StringBuilder���g���Ē��ڕ���������Ă��邩����v���낤�B
���Ȃ݂�SimpleDateFormat�́Asynchronized���g���ē����������̂�����new�ō���̂Ƃł́A���������������������������ۂ��B[/2008-05-12]
�ȉ��̂悤�ȃX���b�h�����s�Ŏ��s���A���Ԃ��v�����Ă݂��B�iWindowsXP�AJDK1.6�j
| ���s�� | �o�b�`�p�^�[���P | �o�b�`�p�^�[���Q | �o�b�`�p�^�[���R | �o�b�`�p�^�[���Q�f | �o�b�`�p�^�[���P�f |
|---|---|---|---|---|---|
| �@ | �S�̂ŋ��ʂ�DateFormat�� ��������i�������K�v�j |
���[�v���Ŗ���DateFormat�� �����Ȃ��i�����͕s�v�j |
ThreadLocal��DateFormat�� �����Ȃ��i�����͕s�v�j[2008-07-10] |
���[�v�O��DateFormat�� �����Ȃ��i�����͕s�v�j |
�X���b�h��p��DateFormat�� �����Ȃ��i�����͕s�v�j |
| �@ | class Worker1 extends Thread { private static final DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); @Override public void run() { for (int i = 0; i < 10000; i++) { synchronized (df) { try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } } } |
class Worker2 extends Thread { @Override public void run() { for (int i = 0; i < 10000; i++) { DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } } |
class Worker3 extends Thread { private static final ThreadLocal<DateFormat> dflocal = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy/MM/dd"); } }; @Override public void run() { for (int i = 0; i < 10000; i++) { DateFormat df = dflocal.get(); try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } } |
class Worker2_ extends Thread { @Override public void run() { DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); for (int i = 0; i < 10000; i++) { try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } } |
class Worker1_ extends Thread { private final DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); @Override public void run() { for (int i = 0; i < 10000; i++) { try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } } |
| 2 | ��310ms | ��600ms | ��260ms | ��260ms | ��210ms |
| 3 | ��390ms | ��750ms | ��300ms | ��300ms | ��250ms |
| 10 | ��1060ms | ��2030ms | 660�`900ms | 660�`900ms | 580�`600ms |
���ԑ���́Astart()���Ă���join()���I���܂ł̎��ԁB���[�J�[�X���b�h���C���X�^���X�����鎞�Ԃ͊܂܂Ȃ��B
�܂�o�b�`�p�^�[���P��o�b�`�p�^�[���P�f��DateFormat���C���X�^���X�����鎞�Ԃ͎��Ԍv���Ɋ܂܂�Ă��Ȃ��B
��ʂɓ�������������A�p�^�[���P�ł͔r������đ҂�����������̂ɑ��A�p�^�[���Q�ł͂���͖����͂��B�Ȃ̂ɁA�p�^�[���P�̕��������B
�܂��r�������isynchronized�j��SimpleDateFormat�C���X�^���X�����قǂ̕��ׂ͂������Ă��Ȃ��ƍl������B
�iSimpleDateFormat�̃R���X�g���N�^�[�� �f�t�H���g���J�[���擾���̐F�X�ȏ������s���Ă���̂ŁA���������d���悤���j
�isynchronized�u���b�N�̒��̏����Ɏ��Ԃ�������悤�Ȃ�
���ʂ�����ւ�邩������Ȃ����A���Ȃ��Ƃ�SimpleDateFormat#parse()�͂���Ȃɏd���͖����悤���j
��new
SimpleDateFormat()�ɂ����鎞�Ԃ�synchronized�ɂ����鎞�Ԃ̔�r
�p�^�[���Q�f�́A�p�^�[���Q�ɑ��A�X���b�h�̃��[�v�̑O�Ɉ�x�����X���b�h����SimpleDateFormat�����A���̃X���b�h���ł͂�����g���i���������Ĕr�����s�v�ȁj�p�^�[���B
SimpleDateFormat�̐����͈�x�����s��Ȃ����A�������Ƃ�K�v�������̂ōł������B�i�p�^�[���P�f�̓N���X�������̏�������SimpleDateFormat���C���X�^���X�����Ă���A�v�����Ԃɂ��ꂪ�܂܂�Ă��Ȃ������ŁA�����͓����j
�p�^�[���R�́AThreadLocal�N���X���g�����A�X���b�h���ɃC���X�^���X��ۗL����d�g�݁B�������̓X���b�h���Ɉ�x�����s���Ȃ��B���Ȃ킿�A����Ƃ��Ă̓p�^�[���Q�f�Ɠ����ł���A���s���x���قƂ�Ǔ����I
�o�b�`�ł�ThreadLocal���g��Ȃ��Ă��X���b�h���ɕϐ���ێ��ł���i�p�^�[���P�f�j���A�E�F�u�i�T�[�u���b�g�j�Ȃ�ƂĂ��L�����낤�B[2008-07-10]
�E�F�u�i�T�[�u���b�g�j�ł̓��[�v����Ƃ��������͂��܂薳���Ǝv���̂ŁA�ȉ��̂悤�ȃp�^�[���ɂȂ�Ǝv���B
�i�o�b�`�ɗႦ��A���L��doGet()�����[�v�ŌĂ��C���[�W�j
| �E�F�u�p�^�[���P | �E�F�u�p�^�[���Q | �E�F�u�p�^�[���R |
|---|---|---|
| �S�̂ŋ��ʂ�DateFormat�� ��������i�������K�v�j |
��������DateFormat�� �����Ȃ��i�����͕s�v�j |
ThreadLocal��DateFormat�� �����Ȃ��i�����͕s�v�j[2008-07-10] |
class Servlet1 extends HttpServlet { private final DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); @Override protected void doGet(�`) { synchronized (df) { try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } } |
class Servlet2 extends HttpServlet { @Override protected void doGet(�`) { DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } |
class Servlet3 extends HttpServlet { private final ThreadLocal<DateFormat> dflocal = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy/MM/dd"); } }; @Override protected void doGet(�`) { DateFormat df = dflocal.get(); try { df.parse("2008/04/26"); } catch (ParseException e) { e.printStackTrace(); } } } |
| �o�b�`�p�^�[���P�ɑ��� | �o�b�`�p�^�[���Q�ɑ��� | �o�b�`�p�^�[���R�ɑ��� |
�Y������o�b�`�p�^�[���̎��s���Ԃ��l����A�E�F�u�p�^�[���R���ł����s�������ǂ��Ǝv����B�����Ńp�^�[���P�B[/2008-07-10]
�i�E�F�u�p�^�[���P��R�Ȃ�DateFormat�C���X�^���X���j������Ȃ��̂�GC�ɂ��e�����Ȃ����j
���E�F�u�p�^�[��1��df�́A�o�b�`�ƈ����static�ϐ��ł͂Ȃ����A�r������K�v�������B�Ȃ��Ȃ�A�T�[�u���b�g�ł�1�̃C���X�^���X���X���b�h����Ăяo������B
Calendar��Date�̉��H�E���Z���s���N���X�B
�N�E���E���E���E���E�b���ʂɐݒ肵����擾������A���̒P�ʂʼn��Z�����茸�Z�����肷�邱�Ƃ��o����B
�iDate�̓^�C���]�[����ێ����Ă��Ȃ����jCalendar���^�C���]�[����ێ�����B[2016-05-30]�i��JDK1.8��ZonedDateTime�j
Calendar�͒��ۃN���X�Ȃ̂ŁA�C���X�^���X������ɂ�getInstance()���Ăяo���B
Calendar cal = Calendar.getInstance(); //���ݓ�����ێ������J�����_�[
��̓I�ɂ́ACalendar#getInstance()�̓f�t�H���g�ł�GregorianCalendar�C���X�^���X��Ԃ��B
������JDK1.6�ł́A�f�t�H���g���J�[�������{�ɂȂ��Ă���ꍇ��JapaneseImperialCalendar��Ԃ��B����͘a���������炵���B
���̃N���X��public����Ȃ��̂�Javadoc�͐�������ĂȂ��݂��������ǁA�\�[�X�������auther�͓��{�l���ۂ��B
�������B
�ł��f�t�H���g�̃f�t�H���g���J�[����JapaneseImperialCalendar��Ԃ��悤�ȏ����ɂȂ��Ă��Ȃ��̂ŁA��ԊȒP�Ȃ̂̓��J�[���������Ŏw�肵�Ă�邱�Ƃ��ȁB
//�~ Locale loc = Locale.JAPAN;
//�~ Locale loc = Locale.JAPANESE;
Locale loc = new Locale("ja", "JP", "JP");
cal = Calendar.getInstance(loc);
System.out.println(cal.getClass());
GregorianCalendar�̃R���X�g���N�^�[�ڌĂяo���ăC���X�^���X�����邱�Ƃ��o����B
Calendar cal = new GregorianCalendar(year, month - 1, day); Calendar cal = new GregorianCalendar(year, month - 1, day, hour, minute, second); Calendar cal = new GregorianCalendar(year, month - 1, day, hour, minute, second, msec);
�^�C���]�[�����w�肷��ɂ͈ȉ��̂悤�ɂ���B[2016-05-30]
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"));
Date�Ƃ̕ϊ��͈ȉ��̗l�ɂ���B
Date date = �`; cal.setTime(date);
Date date = cal.getTime();
Date�N���X�Ȃ̂�setTime()�EgetTime()�Ƃ́A����@���ɁH
�Ȃ��A�~���b��\�������ilong�^�j����Ĉ������Ƃ��o����B
cal.setTimeInMillis(date.getTime()); cal.setTimeInMillis(System.currentTimeMillis());
Date date = new Date(cal.getTimeInMillis());
��Calendar�̓^�C���]�[����ێ����Ă��邪�ADate�͕ێ����Ă��Ȃ��iUTC�����j�B�~���b��long�l��UTC�����B�����������Ƃ��́ACalendar���̃^�C���]�[����/����ϊ������B[2016-05-30]
Calendar�̌X�̗v�f�i�N���������b�j������������������擾�����肷�邱�Ƃ��o����B
int year = cal.get(Calendar.YEAR);
cal.set(Calendar.YEAR, year);
���w�肷��萔
���������iMONTH�j�����́A���̂�0�`11�ň����悤�ɂȂ��Ă���B�i0��1���A11��12���j
int month = cal.get(Calendar.MONTH) + 1;
cal.set(Calendar.MONTH, month - 1);
���l�̐ݒ�/�擾�i����DATE�iDAY_OF_MONTH�j��HOUR�iHOUR_OF_DAY�j�j�ł́A�^�C���]�[�����l�������B[2016-05-30]
������x�܂Ƃ߂ăZ�b�g���郁�\�b�h������B
cal.set(year, month - 1, day, hour, min, sec);
���錎�̌��������擾����ɂ́AgetActualMaximum()���\�b�h���g���B[2008-02-17]
Calendar cal = new GregorianCalendar(2008, 2 - 1, 15); int max = cal.getActualMaximum(Calendar.DATE); cal.set(Calendar.DATE, max);
getMaximum()�Ƃ������\�b�h�����邪�A����͂��̗�Ŏ�肤��ő�̒l��Ԃ��B
���Ȃ킿�O���S���I��iGregorianCalendar�j�ł�getMaximum(DATE)�͏��31��Ԃ��B
getActualMaximum()�͂��邤�N��2���Ȃ�29�A�����łȂ�2���Ȃ�28�A���̌���30��Ԃ��Ă����B
���l��getActualMinimum()��getMinimum()�Ƃ������\�b�h�����邪�A������͓��̏ꍇ�͏��1��Ԃ��̂ŁA�킴�킴�g��Ȃ��Ă������Ǝv���B
���Ȃ݂�getMaximum(YEAR)�̒l��292278994�i2��9�疜�j�������B
�܂肱��JRE���g��������ꍇ�A����2��9�疜�N��肪��������킯��(��)
Calendar�̌X�̗v�f�i�N���������b�j����ɁA�l�������邱�Ƃ��o����B
������ɑ���������̂́A�ȉ��̂悤�ɂȂ�B
cal.add(Calendar.MONTH, +1); //1�������₷ cal.add(Calendar.MONTH, -1); //1�������炷
12������1�����i�߂�ƔN��1�����A����1���ɂȂ�B
�t��1������1�����߂��ƔN��1����A����12���ɂȂ�B
add()�ł́A��ɂ����J�����_�[�t�B�[���h��菬�����t�B�[���h�͊�{�I�ɕς��Ȃ��B
�܂茎����ɂ����ꍇ�A��{�I�ɓ��i�₻��ȉ��̎����b�j�͕ς��Ȃ��B
�����������������ʁA���݂��Ȃ����ɂȂ����ꍇ�i�܂�5/31��4���ɂȂ�悤�ȏꍇ�j�A���݂��閖���ɂȂ�i5/31��4/30�j�B
//3�����猎��-1������i2008�N�͂��邤�N�j 2008-03-27 �� 2008-02-27 2008-03-28 �� 2008-02-28 2008-03-29 �� 2008-02-29 2008-03-30 �� 2008-02-29 2008-03-31 �� 2008-02-29
add()�łȂ�roll()���g���ƁA��ɂ����J�����_�[�t�B�[���h���傫���t�B�[���h���ς��Ȃ��B
�Ⴆ�Ό�����ɂ����ꍇ�A12������1���₷�ƁA�N�͕ς�炸��1���ɕς��B���ɂ��Ă�add()�Ɠ����B
cal.roll(Calendar.MONTH, true); //������1�������₷ cal.roll(Calendar.MONTH, false); //������1�������炷 cal.roll(Calendar.MONTH, +1); //������1�������₷ cal.roll(Calendar.MONTH, -1); //������1�������炷
������GregorianCalendar#roll()�́A���邤�N�Ɋւ��ăo�O������B
��Bug
ID: 5014535 - incorrect rolling from leap-years
2/29�i���邤�N�j����g���邤�N�łȂ��N�h��YEAR�P�ʂ�roll()����ƁA�{����2/28�ɂȂ�ׂ��Ȃ̂�3/1�ɂȂ��Ă��܂��B
Calendar cal = new GregorianCalendar(2008, 2 - 1, 29); System.out.println(cal.getTime()); cal.roll(Calendar.YEAR, true); System.out.println(cal.getTime());
Fri Feb 29 00:00:00 JST 2008
Sun Mar 01 00:00:00 JST 2009
���Ȃ݂�add(YEAR)�̓o�O���Ă��Ȃ��B
Calendar cal = new GregorianCalendar(2008, 2 - 1, 29); System.out.println(cal.getTime()); cal.add(Calendar.YEAR, 1); System.out.println(cal.getTime());
Fri Feb 29 00:00:00 JST 2008
Sat Feb 28 00:00:00 JST 2009
�����2004�N�iJRE1.4.2�j�ɕ��ꂽ�o�O�ŁA�����Ă݂��JRE1.4.0�����������AJRE1.5��1.6�������Ă��Ȃ������B���u����Ă�낤���B
�ł��m����roll(YEAR)�Ȃ�Ďg��Ȃ��iadd(YEAR)�ő�։\�A�Ƃ������add()���g���̂��f������ȁj�̂ŁA�ǁ[�ł������悤�ȋC�����Ă���(���)
Date#toString()�ŕ\������鎞���́A���{��PC�Ŏ��s�����ꍇ�͓��{���Ԃŕ\�������Ǝv���B[2010-05-27]
����́A�f�t�H���g�̃^�C���]�[�������{�ɂȂ��Ă���ׁB
�^�C���]�[����ς��Ă��ƁA�\�����e���ς��B
�iDate���g�̓^�C���]�[����ێ����Ă��Ȃ����ADate#toString()�̓f�t�H���g�^�C���]�[�����g���Ă���B[2016-05-30]�j
��JDK1.8��ZoneId
import java.util.TimeZone;
TimeZone defaultZone = TimeZone.getDefault(); System.out.println(defaultZone); System.out.println(defaultZone.getRawOffset() / (1000 * 60 * 60));
�����s��
sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null] 9
�I�t�Z�b�g��32400000�~���b�́A9���ԁB
Date date = new Date(); //���ݓ���
System.out.println("�f�t�H���g�F" + date);
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
System.out.println("�A�����J�@�F" + date);
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
System.out.println("GMT �@�@�@�F" + date);
TimeZone.setDefault(defaultZone);
System.out.println("���ɖ߂����F" + date);
�����s��
�f�t�H���g�FFri May 28 00:55:36 JST 2010 �A�����J�@�FThu May 27 08:55:36 PDT 2010 GMT �@�@�@�FThu May 27 15:55:36 GMT 2010 ���ɖ߂����FFri May 28 00:55:36 JST 2010
Date#toString()�����Ńf�t�H���g�̃^�C���]�[�����Q�Ƃ��Ă���ׁA�����Date�C���X�^���X�ł�toString()�̏o�͕\�����ς���Ă���B
�iDate�C���X�^���X�����ŕێ����Ă��鎞���i����_����̌o�ߎ��ԁj�͕ς��킯�ł͂Ȃ��j
�܂��AJavaVM�N������VM�����Ɉȉ��̂悤�Ɏw�肷�邱�ƂŁA�f�t�H���g�̃^�C���]�[����ݒ肷�邱�Ƃ��o����B
> java -Duser.timezone=America/Los_Angeles jp.hishidama.example.TimeZoneExample
�^�C���]�[���Ɏw��ł���ID�̈ꗗ�́A�ȉ��̂悤�ɂ��Ď擾����B
String[] ids = TimeZone.getAvailableIDs();
for (String id : ids) {
System.out.println(id);
}
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@