ダウンロード サンプルファイル (50.0 KB)
Androidアプリケーションは、Java言語を用いて開発できます。Androidアプリケーションの開発にあたっては、米グーグル社が提供するAndroid SDK(Software Development Kit、開発キット)の知識は当然ながら、基本となるのはJava SEです。この連載では、Javaでの開発の基礎となるJava SEを、実際にAndroid上で実行できるソースコードとともに解説します。
はじめに
最終回の本稿は、基本的なJava APIで、これまでとりあげていなかった日付や時間を操作するAPIを紹介します。
なおAndroid SDKに含まれる基本APIは、現行のJava SE 6とまったく同じというわけではありません。API Levelが低いと、Java SE 6に含まれるクラスやメソッドの一部が実装されていない場合があります。
API Levelの微妙な違いは、Android Developersサイトで確認するようにしてください。
対象読者
Androidアプリケーションの開発を始めたい方で、JavaとEclipseのごく基本的な知識がある方を対象とします。
日付、時間処理の基本
Javaで日付や時刻をあつかうための基本となるクラスは、java.util.Dateとjava.util.Calendarクラスです。
java.util.Dateクラスは、特定の日付と時刻を保持するためのクラスです。保持する値は、エポックと呼ばれるグリニッジ標準時の1970年1月1日00:00:00から起算したミリ秒となっています。
ただ現行のJavaでは、このクラスのメソッドを使うことはあまりありません。ほとんどのメソッドが非推奨となっており、通常は国際化に対応したjava.util.Calendarクラスや日付表示用のクラスを利用します。
Calendarクラスは、さまざまな言語や地域の日付、時刻の変換機能に対応する抽象クラスです。異なる暦に対しても、共通のAPIが提供されています。
java.util.Calendarクラスの使い方
Calendarオブジェクトは抽象クラスなので、インスタンスの生成はコンストラクタを使用せずに、getInstanceメソッドを使用します。getInstanceメソッドは、指定されたロケールまたはタイムゾーンに対応したCalendarオブジェクトを返します。ロケールとは、ある地域の国や言語といった情報のことです。
引数がない場合は、現在のシステム時刻を示すデフォルトのCalendarオブジェクトが返されます。なおデフォルトのCalendarオブジェクトは、Calendarの具象サブクラスであるGregorianCalendarクラスのインスタンスとなっています。このクラスは、世界のほとんどの地域で使用される標準的なカレンダです。
では、DateクラスとCalendarクラスを使って、現在日時を表示してみましょう。今回も、テキストビューを使って、文字を表示しています。
ソースファイルは、次のようになっています。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/parent"
>
</LinearLayout>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sample1();
}
// 文字列の1行表示
public void printString(String s) {
// ベースのレイアウト取得
LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
TextView tv = new TextView(this);
tv.setTypeface(Typeface.MONOSPACE); // 等幅フォントの指定
tv.setText(s);
parent.addView(tv); // ビューの追加
}
public void sample1() {
// Dateクラスによる現在時表示
Date date = new Date();
printString("Date: " + date.toString());
// デフォルトのCalendarオブジェクト
Calendar cal = Calendar.getInstance();
// 実装クラス名表示
printString(cal.getClass().getName());
// Calendarクラスによる現在時表示
String tmp = "Calendar: " + cal.get(Calendar.YEAR) + "/"
+ (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DATE)
+ " " + cal.get(Calendar.HOUR_OF_DAY) + ":"
+ cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);
printString(tmp);
}
Dateクラスでは、toStringメソッドで、日時を文字列に変換できます。
Calendarクラスでは、getメソッドにより日時の各値を取得して表示しています。getメソッドの引数には、日時のフィールドを示す定数を指定します。この定数は、Calendarクラスで定義されており、主な定数は以下のとおりです。
| 定数名 | 説明 |
| YEAR | 年 |
| MONTH | 月 |
| DATE、DAY_OF_MONTH | 月の日 |
| HOUR_OF_DAY | 24時間制の時刻 |
| AM_PM | 午前か午後 |
| HOUR | 12時間制の時刻 |
| MINUTE | 分 |
| SECOND | 秒 |
| MILLISECOND | ミリ秒 |
| DAY_OF_WEEK | 曜日 |
この記事は参考になりましたか?
- Android開発のためのJava SE再入門連載記事一覧
-
- Androidにおける日付処理の基本
- ストリームでの入出力処理の基本
- コレクションとAndroid非同期処理の基本
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 高江 賢(タカエ ケン)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
