51
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidで使える日付処理系のライブラリーを試してみた

Posted at

TL;DR

はじめに

現状Androidで使えるjava.util.Datejava.util.Calendarを使った日付処理は色々つらいので、ライブラリを使うことになると思います。いざ導入しようと思ったら色々あたので、簡単に試してみました。

各ライブラリ導入方法とか

joda-time-android

JavaではデファクトスタンダードとなっているJoda-TimeをAndroidに最適化したライブラリ

1.build.gradleのdependenciesに下記を追加

build.gradle
dependencies {
    compile 'net.danlew:android.joda:2.9.2'
}

2.Applicationクラスをextendsして初期化を追加

MyApp.java
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        JodaTimeAndroid.init(this);
    }
}

2つの日付の間が何日間か求める

DateTime from = new DateTime("2012-04-18T20:00:00");
DateTime to = new DateTime("2014-5-18T10:00:00");
Duration duration = new Duration(from, to);
duration.getStandardDays()
System.out.println(duration.getStandardDays() + "日");

date4j

Joda-Timeはtoo fatなので必要な部分だけ残したライブラリ(Androidに最適化されているわけではない)

1.build.gradleのdependenciesに下記を追加(Applicationクラスでの初期化はいらない

build.gradle
dependencies {
    compile 'net.danlew:android.joda:2.9.2'
}

2つの日付の間が何日間か求める

DateTime from = new DateTime(2012, 4, 18, 20, 0, 0, null);
DateTime to = new DateTime(2014, 5, 18, 10, 0, 0, null);
System.out.println(from.numDaysFrom(to) + "日");

ThreeTenABP

まだAndroidではサポートされてないJavaの日付処理APIをバックポートしたThreeTenBPをAndroid向けに最適化したライブラリ

1.build.gradleのdependenciesに下記を追加

build.gradle
dependencies {
    compile 'com.jakewharton.threetenabp:threetenabp:1.0.3'
}

2.Applicationクラスをextendsして初期化を追加

MyApp.java
public class MyApp extends Application {

   @Override
   public void onCreate() {
       super.onCreate();
       AndroidThreeTen.init(this);
   }
}

2つの日付の間が何日間か求める

ZonedDateTime from = ZonedDateTime.parse("2012-04-18T20:00:00+09:00[Asia/Tokyo]");
ZonedDateTime to = ZonedDateTime.parse("2014-05-18T10:00:00+09:00[Asia/Tokyo]");
System.out.println(Duration.between(from, to).toDays() + "日");

おわりに

どれも導入は簡単だし、クラスやメソッドもだいぶ直感的でした。
しかしこれから使うのだとすればThreeTenABPになるだろうなと思います。
今後AndroidがJava8をサポートした場合に改めて使い方を学ぶ必要がなさそうですし。

51
49
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?