public class hiTime extends Object
時間/時刻表示やタイマースケジュールなどの時間に関するユーティリティ―メソッド群です
コンストラクタと説明 |
---|
hiTime() |
修飾子とタイプ | メソッドと説明 |
---|---|
static TimerTask |
asTimerTask(hiU.RunnableEx<Exception> func_)
ラムダ式を実行するTimerTaskを得る
|
static long |
currentMilliSec()
ミリ秒単位の現システム時刻を得る.
|
static String |
currentTime()
現時刻を表す文字列を得る.
|
static String |
currentTime(String format_)
現時刻を表す文字列を得る.
|
static String |
dispTime(long millisec_)
longで得たシステムクロックを日時表示にする.
|
static String |
dispTime(String format_,
long millisec_)
longで得たシステムクロックを日時表示にする.
|
static Timer |
doAfter(hiU.RunnableEx<Exception> func_,
long millisec_)
指定ミリ秒後に指定ラムダ式を実行する
// 2秒後に実行 Timer _timer= hiU.doAfter(()->{ps.println(hiTime.currentTime());},2000); // .... |
static TimerTask |
doAfter(Timer timer_,
hiU.RunnableEx<Exception> func_,
long millisec_)
指定タイマーで指定ミリ秒後に指定ラムダ式を実行する
|
static Timer |
everyDay(hiU.RunnableEx<Exception> func_,
int hour_,
int minute_,
int second_)
毎日指定時刻に実行(ラムダ式).
|
static TimerTask |
everyDay(Timer timer_,
hiU.RunnableEx<Exception> func_,
int hour_,
int minute_,
int second_)
指定タイマーに毎日指定時刻に実行する動作をラムダ式で設定する.
|
static Timer |
everyDay(TimerTask task_,
int hour_,
int minute_,
int second_)
毎日指定時刻に実行するタスクを設定する.
|
static TimerTask |
everyDay(Timer timer_,
TimerTask task_,
int hour_,
int minute_,
int second_)
指定タイマーに毎日指定時刻に実行するタスクを設定する.
|
static Timer |
everyHour(hiU.RunnableEx<Exception> func_,
int minute_,
int second_)
毎時指定分に実行(ラムダ式).
|
static TimerTask |
everyHour(Timer timer_,
hiU.RunnableEx<Exception> func_,
int minute_,
int second_)
指定タイマーに毎時指定分に実行する動作をラムダ式で設定する.
|
static Timer |
everyHour(TimerTask task_,
int minute_,
int second_)
毎時指定分に実行するタスクを設定する.
|
static TimerTask |
everyHour(Timer timer_,
TimerTask task_,
int minute_,
int second_)
指定タイマーに毎時指定分に実行するタスクを設定する.
|
static Timer |
everyMinute(hiU.RunnableEx<Exception> func_,
int second_)
毎分指定秒に実行(ラムダ式).
|
static TimerTask |
everyMinute(Timer timer_,
hiU.RunnableEx<Exception> func_,
int second_)
指定タイマーに毎時分定秒に実行する動作をラムダ式で設定する.
|
static Timer |
everyMinute(TimerTask task_,
int second_)
毎時分定秒に実行するタスクを設定する.
|
static TimerTask |
everyMinute(Timer timer_,
TimerTask task_,
int second_)
指定タイマーに毎分指定秒に実行するタスクを設定する.
|
static String |
lapTime(long tt_)
引数と現時刻との差を文字列で表す.
|
static Timer |
repeatAfter(hiU.RunnableEx<Exception> func_,
long delay_,
long period_)
指定タイマーで指定ミリ秒後以降指定ミリ秒間隔で指定ラムダ式を実行する.
|
static TimerTask |
repeatAfter(Timer timer_,
hiU.RunnableEx<Exception> func_,
long delay_,
long period_)
指定タイマーで指定ミリ秒後以降指定ミリ秒間隔で指定ラムダ式を実行する
|
static Exception |
sleep(int milisec_)
指定ミリ秒Exception無しにスリープする.
|
static String |
timeDiff(long t0_,
long t_)
ミリ秒の差を文字列化.
|
public static String currentTime()
忘れやすい単純手続きをまとめたものです
次の処理 System.out.println("cur="+hiTime.currentTime()); は //import java.text.DateFormat; SimpleDateFormat dateForm = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); System.out.println("cur="+dateForm.format(new Date())); と同等です。
現時刻ではなくlongによる時刻情報を表示したい場合
hiTime.dispTime(long)
を使用してください。
currentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static String currentTime(String format_)
忘れやすい単純手続きをまとめたものです
次の処理 System.out.println("cur="+hiTime.currentTime("yyyyMMdd_HHmmss")); は //import java.text.DateFormat; SimpleDateFormat dateForm = new SimpleDateFormat("yyyyMMdd_HHmmss"); System.out.println("cur="+dateForm.format(new Date())); と同等です
現時刻ではなくlongによる時刻情報を表示したい場合
hiTime.dispTime(String,long)
を使用してください。
表示桁数は基本的には、フォーマット文字の桁数と同じになります。 フォーマットこれらの文字以外はそのまま出力されます。 フォーマット文字と競合する文字を入れたい場合はシングルクオートで囲みます。 シングルクオートを出したい場合は2個連続して書きます。
次のフォーマット文字があります。
指定文字 | 意味 | 例と注意書き |
y(小文字) | 年 | 4桁指定すると4桁表示されます。2桁指定すると下桁が表示されます。 yyyy⇒2001 yy⇒01 |
M(大文字) | 月 | 2桁表示すると数字で表示されます。1月は01となります。1桁指定の場合はゼロサプレスされ1月なら1,10月なら 10となります。3桁以上を指定するとJulなどの月名表示となります。 |
d(小文字) | 日 | 2桁指定すると1桁値は0が付加されます。1日なら01。1桁指定の場合はゼロサプレスされ、1日は1,10日は10と表示されます。 |
H(大文字) | 時(0~23) | 2桁指定すると1桁値は0が付加されます。1時なら01。1桁指定の場合はゼロサプレスされ、1時なら1,10時なら 10となります。 |
m(小文字) | 分 | 2桁指定すると1桁値は0が付加されます。1分なら01。1桁指定の場合はゼロサプレスされ、1分なら1,10分なら 10となります。 |
s(小文字) | 秒 | 2桁指定すると1桁値は0が付加されます。1秒なら01。1桁指定の場合はゼロサプレスされ、1秒なら1,10秒なら 10となります。 |
SSS(大文字) | ミリ秒 | 間違いを防ぐため必ず3桁指定してください。 |
E(大文字) | 曜日 | 曜日名を表示します。表示はロケールによって異なります。 |
a(小文字) | 午前/午後 | 午前/午後またはAM/PMが表示されます。表示はロケールによって異なります。 |
K(大文字) | 0~11時 | 午前または午後の0時から11時の表示となります。 |
z(小文字) | タイムゾーン名 | 3桁以内だと省略名(JSTなど)が出ます。3桁を超えると省略無しの名前がでます。 省略無しの名前はロケールによって表示法が異なります |
Z(大文字) | タイムゾーン時差 | UTC(Universal Time, Coordinated :協定世界時)との時差が出ます。日本だと+0900と表示されます。なおUTCとGMTは ほぼ同じです。 |
以下の使用は推奨しません | ||
k(小文字) | 24,1~23時 | 12時から1時を経て23時の表示となります。3日24時は3日0時と同じであり 3日23時の後すなわち4日0時ではありません。 |
h(小文字) | 12,1~11時 | 午前または午後の12時から1時を経て11時の表示となります。午前12時は正午では なく午前0時の事です。 |
w(小文字) | 年内の週番号 | 最初の週は1となります。土曜から日曜に変わるところでカウントアップされます |
W(大文字) | 月内の週番号 | 最初の週は1となります。土曜から日曜に変わるところでカウントアップされます |
D(大文字) | 年内の日番号 | 最初の日は1です。 |
F(大文字) | 月内の7日カウント | 月内で7日単位でのカウントです。最初は1です。Wと異なり土日でのカウントアップとはなりません。 |
G(大文字) | 紀元 | ADまたはBCが出ます。 |
format_
- 時刻フォーマットcurrentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static long currentMilliSec()
これは
System.currentTimeMillis()
と同等です。
currentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static String lapTime(long tt_)
フォーマットは以下の何れかが採用されます。
時間 形式 補足 60秒以内 s.SSS sは秒、SSSはミリ秒 60分以内 m.ss.SSS mは分,ssは秒、SSSはミリ秒 60分以上 t.mm.ss.SSS tは時間,mmは分,ssは秒,SSSはミリ秒
何れの場合も先頭の値は0サプレスされ、2番目以降は桁数分の0フィルが行われます。
次のようなコードで処理の所要時間を示すことができます。
long t0= hiTime.currentMilliSec(); // なんだかんだ hiU.err.println("use "+hiU.lapTime(t0));
tt_
- 時刻currentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static String timeDiff(long t0_, long t_)
フォーマットは以下の何れかが採用されます。
時間 形式 補足 60秒以内 s.SSS sは秒、SSSはミリ秒 60分以内 m:ss.SSS mは分,ssは秒、SSSはミリ秒 60分以上 t:mm:ss.SSS tは時間,mmは分,ssは秒,SSSはミリ秒
何れの場合も先頭の値は0サプレスされ、2番目以降は桁数分の0フィルが行われます。
t0_
- スタート時刻t_
- 終了時刻currentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static String dispTime(long millisec_)
忘れやすい単純手続きをまとめたものです
次の処理 long t0= hiTime.currentMilliSec(); System.out.println("cur="+hiTime.dispTime(t0)); は //import java.text.DateFormat; long t0= hiTime.currentMilliSec(); SimpleDateFormat dateForm = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); System.out.println("cur="+dateForm.format(new Date()t0)); と同等です
文字列からクロック(long)を得るメソッドは用意してありません。 次の作業を行ってください。
//import java.text.DateFormat; String dateText="2009/11/21 8:34:21"; SimpleDateFormat dateForm = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); try{ Date date= dateForm.parse(dateText); long time= date.getTime(); } catch(Exception ex){}
標準の作業は面倒なので、メソッド追加は検討中です。
millisec_
- システムクロック(ミリ秒)currentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static String dispTime(String format_, long millisec_)
次の処理 long t0= hiTime.currentMilliSec(); System.out.println("cur="+hiTime.dispTime("yyyyMMdd_HHmmss",t0)); は //import java.text.DateFormat; long t0= hiTime.currentMilliSec(); SimpleDateFormat dateForm = new SimpleDateFormat("yyyyMMdd_HHmmss"); System.out.println("cur="+dateForm.format(new Date(t0))); と同等です
format_
- フォーマットmillisec_
- システムクロック(ミリ秒)currentTime()
,
currentTime(String)
,
currentMilliSec()
,
lapTime(long)
,
timeDiff(long,long)
,
dispTime(long)
,
dispTime(String,long)
public static TimerTask asTimerTask(hiU.RunnableEx<Exception> func_)
func_
- ラムダ式public static Timer everyDay(hiU.RunnableEx<Exception> func_, int hour_, int minute_, int second_)
毎日指定時刻に指定のラムダ式を実行します。
キャンセルするには戻り値のTimerのcancelを呼びます。
// 毎日3時52分15秒に時刻を印字する Timer _timer= hiU.everyDay(()->{ps.println(hiTime.currentTime());},3,52,15); // .... _timer.cancel(); // スケジュールをキャンセルしタイマを無効にする
func_
- ラムダ式hour_
- 時minute_
- 分second_
- 秒public static TimerTask everyDay(Timer timer_, hiU.RunnableEx<Exception> func_, int hour_, int minute_, int second_)
timer_
- タイマーfunc_
- ラムダ式hour_
- 時minute_
- 分second_
- 秒public static Timer everyDay(TimerTask task_, int hour_, int minute_, int second_)
task_
- 実行するタスクhour_
- 時minute_
- 分second_
- 秒public static TimerTask everyDay(Timer timer_, TimerTask task_, int hour_, int minute_, int second_)
timer_
- タイマーtask_
- 実行するタスクhour_
- 時minute_
- 分second_
- 秒public static Timer everyHour(hiU.RunnableEx<Exception> func_, int minute_, int second_)
毎時、指定分秒に指定のラムダ式を実行します。
キャンセルするには戻り値のTimerのcancelを呼びます。
// 毎時52分15秒に時刻を印字する Timer _timer= hiU.everyHour(()->{ps.println(hiTime.currentTime());},52,15); // .... _timer.cancel(); // スケジュールをキャンセルしタイマを無効にする
func_
- ラムダ式minute_
- 分second_
- 秒public static TimerTask everyHour(Timer timer_, hiU.RunnableEx<Exception> func_, int minute_, int second_)
timer_
- タイマーfunc_
- ラムダ式minute_
- 分second_
- 秒public static Timer everyHour(TimerTask task_, int minute_, int second_)
task_
- 実行するタスクminute_
- 分second_
- 秒public static TimerTask everyHour(Timer timer_, TimerTask task_, int minute_, int second_)
timer_
- タイマーtask_
- 実行するタスクminute_
- 分second_
- 秒public static Timer everyMinute(hiU.RunnableEx<Exception> func_, int second_)
毎分、指定秒に指定のラムダ式を実行します。
キャンセルするには戻り値のTimerのcancelを呼びます。
// 毎分15秒に時刻を印字する Timer _timer= hiU.everyMinute(()->{ps.println(hiTime.currentTime());},15); // .... _timer.cancel(); // スケジュールをキャンセルしタイマを無効にする
func_
- ラムダ式second_
- 秒public static TimerTask everyMinute(Timer timer_, hiU.RunnableEx<Exception> func_, int second_)
timer_
- タイマーfunc_
- ラムダ式second_
- 秒public static Timer everyMinute(TimerTask task_, int second_)
task_
- 実行するタスクsecond_
- 秒public static TimerTask everyMinute(Timer timer_, TimerTask task_, int second_)
timer_
- タイマーtask_
- 実行するタスクsecond_
- 秒public static Timer doAfter(hiU.RunnableEx<Exception> func_, long millisec_)
// 2秒後に実行 Timer _timer= hiU.doAfter(()->{ps.println(hiTime.currentTime());},2000); // .... _timer.cancel(); // スケジュールをキャンセルしタイマを無効にする
func_
- 式millisec_
- 指定時間後に実行public static TimerTask doAfter(Timer timer_, hiU.RunnableEx<Exception> func_, long millisec_)
timer_
- タイマーfunc_
- 式millisec_
- 指定時間後に実行public static TimerTask repeatAfter(Timer timer_, hiU.RunnableEx<Exception> func_, long delay_, long period_)
timer_
- タイマーfunc_
- 式delay_
- 指定時間後に実行period_
- 実行間隔public static Timer repeatAfter(hiU.RunnableEx<Exception> func_, long delay_, long period_)
hiTime.repeatAfter(()->{doSomethng();},1000,500);
func_
- 式delay_
- 指定時間後に実行period_
- 実行間隔public static Exception sleep(int milisec_)
milisec_
- スリープするミリ秒