JavaA2Z

KAB-studio > プログラミング > JavaA2Z > エポックとは

エポック

日本語 時代
英語 Epoch
ふりがな えぽっく
フリガナ エポック

解説

アプリケーションが使用する日時の「開始日時」。
世界標準時の「1970/01/01 00:00:00.000」である。
 
多くのコンピューターは、内部時計による時間を、世界標準時の「1970/01/01 00:00:00.000」からの経過ミリ秒で管理する。
この、経過時間を数える「開始時点」となる「1970/01/01 00:00:00.000」を「エポック」と呼ぶ。
現在日時等、日時の管理は多くの場合このエポックからの「のべミリ秒」でう。

エポックからのミリ秒で日時を管理することで、秒から分への繰り上がり等を気にする必要がなくなり、整数値ひとつで管理することができる。
また、日時の表現は時代、宗教、文化によって異なるため、ミリ秒で管理することでそれらの差を吸収することができる。
そのため、古くから慣例的に、コンピューターでの時間管理はエポックからのミリ秒でわれてきた。
 
エポックからのミリ秒は、SystemクラスのcurrentTimeMillis()メソッドで取得できる。
また、CalendarクラスのgetTimeInMillis()メソッドや、DateクラスのgetTime()メソッドでも取得できる。
これらのメソッドで取得するミリ秒は、longで返される。intではない理由は、ミリ秒という細かい数え方のため、intの最大値を超えてしまうからである。
エポックからのミリ秒で日時を取得すると、日時の大小比較や、差の計算や増減、日時を扱うクラス間の変換をうことができる。ただ、通常はCalendarクラスを用いれば問題ないだろう。
 
「エポック」とは「時代」という意味である。
つまり「1970/01/01 00:00:00.000」時点以降が「コンピューターの時代」となるわけである。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Sample
{
    public static void main( String[] args )
    {
        // 現在の「エポックからのミリ秒」を取得します。
        long l = System.currentTimeMillis();
        System.out.println( l );
        // 1267706219921

        // 出力フォーマット。
        // 「年/月/日 時:分:秒.ミリ秒」と出力します。
        String format = "yyyy/MM/dd HH:mm:ss.SSS";

        // 現在日時を格納したCalendarクラスのインスタンスを取得します。
        Calendar now = Calendar.getInstance();
        // この中に格納されている「エポックからのミリ秒」を取得します。
        System.out.println( now.getTimeInMillis() );
        // 1267706219953
        System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
        // 2010/03/04 21:36:59.953

        // このインスタンス内の現在日時をリセットすると、
        // エポックの日時になります。
        now.clear();
        System.out.println( now.getTimeInMillis() );
        // -32400000
        System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
        // 1970/01/01 00:00:00.000

        // 注:エポックからのミリ秒が「-32400000」なのは、
        // 「日本標準時のエポック」にリセットしたからです。
        // 世界標準時と日本標準時の時差9時間=32400000ミリ秒
        // だけ、エポックからのミリ秒がずれています。

        // このインスタンスに、最初にSystemクラスの
        // currentTimeMillis()メソッドで取得したミリ秒を、
        // セットします。
        now.setTimeInMillis( l );
        System.out.println( now.getTimeInMillis() );
        // 1267706219921
        System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
        // 2010/03/04 21:36:59.921
    }
}
// Sample.java
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Sample
{
    public static void main( String[] args )
    {
        // 現在の「エポックからのミリ秒」を取得します。
        long l = System.currentTimeMillis();
        System.out.println( l );
        // 1267706219921

        // 出力フォーマット。
        // 「年/月/日 時:分:秒.ミリ秒」と出力します。
        String format = "yyyy/MM/dd HH:mm:ss.SSS";

        // 現在日時を格納したCalendarクラスのインスタンスを取得します。
        Calendar now = Calendar.getInstance();
        // この中に格納されている「エポックからのミリ秒」を取得します。
        System.out.println( now.getTimeInMillis() );
        // 1267706219953
        System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
        // 2010/03/04 21:36:59.953

        // このインスタンス内の現在日時をリセットすると、
        // エポックの日時になります。
        now.clear();
        System.out.println( now.getTimeInMillis() );
        // -32400000
        System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
        // 1970/01/01 00:00:00.000

        // 注:エポックからのミリ秒が「-32400000」なのは、
        // 「日本標準時のエポック」にリセットしたからです。
        // 世界標準時と日本標準時の時差9時間=32400000ミリ秒
        // だけ、エポックからのミリ秒がずれています。

        // このインスタンスに、最初にSystemクラスの
        // currentTimeMillis()メソッドで取得したミリ秒を、
        // セットします。
        now.setTimeInMillis( l );
        System.out.println( now.getTimeInMillis() );
        // 1267706219921
        System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
        // 2010/03/04 21:36:59.921
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2010/03/04
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。