現在時刻をOSから取得する方法は、何通りか存在します。その中から主なものを紹介します。
現在時刻を表す「エポックからのミリ秒」はjava.lang.SystemクラスのcurrentTimeMillis()メソッドから取得できます。下記のソースコードを実行してください。
CurrentDatetimeSample1.java | |
|
現在時刻: エポックからのミリ秒:1174366598614
なお、currentTimeMillis()メソッドのAPIドキュメントにあるように、多くのOSでは、時間の粒度が10ミリ秒程度の単位で計測されるようになっています。
特に、処理の所要時間を基に割り算を実施する場合には、0による除算が発生する可能性がありますので、ご注意ください。
現在時刻を表すjava.util.Dateクラスのインスタンスは、パラメータなしのコンストラクタを呼び出すことにより取得できます。下記のソースコードを実行してください。
CurrentDatetimeSample2.java | |
|
現在時刻:Tue Mar 20 13:57:12 JST 2007
現在時刻を表すjava.util.Calendarクラスのインスタンスは、getInstanceメソッドを呼び出すことにより取得できます。下記のソースコードを実行してください。
CurrentDatetimeSample3.java | |
|
現在時刻:java.util.GregorianCalendar[time=1174366821442,areFieldsSet=true,
areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",
offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=2,
WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,
DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,
MINUTE=0,SECOND=21,MILLISECOND=442,ZONE_OFFSET=32400000,DST_OFFSET=0]
CalendarクラスのtoStringの結果はやや可読性に乏しいですね。これを解決するためには、文字列フォーマットを利用することになりますが、これについては後述します。
「エポックからのミリ秒」とjava.util.Dateとjava.util.Calendarの相互変換には、java.util.Dateクラスやjava.util.Calendarクラスのメソッド(コンストラクタも含む)を利用します。
ConvertSample1.java | |
|
変換後の値:Tue Mar 20 14:11:23 JST 2007
ConvertSample2.java | |
|
変換後の値:java.util.GregorianCalendar[time=1174368133239,areFieldsSet=true,
areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",
offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=2,
WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,
DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,
MINUTE=22,SECOND=13,MILLISECOND=239,ZONE_OFFSET=32400000,DST_OFFSET=0]
ConvertSample3.java | |
|
変換後の値:Tue Mar 20 14:24:32 JST 2007
ConvertSample4.java | |
|
変換後の値:1174368381739
ConvertSample5.java | |
|
変換後の値:java.util.GregorianCalendar[time=1174368475786,areFieldsSet=true,
areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",
offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=2,
WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,
DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,
MINUTE=27,SECOND=55,MILLISECOND=786,ZONE_OFFSET=32400000,DST_OFFSET=0]
ConvertSample6.java | |
|
変換後の値:1174368543223
Copyright © ITmedia, Inc. All Rights Reserved.