メインコンテンツまでスキップ

2021年のベストAndroid DateTime Librariesとハウツー例

私たちが作るほとんどのアプリでは、日付と時間が使用される傾向にあります。java.utilで提供される標準的なオプションはよく機能しますが、あまり効果的ではなく、基本的なもののために、多くのカスタムソリューションが必要になる傾向があります。そのため、プロジェクトに多くの定型的なコードを追加することになり、エラーが発生する可能性があります。しかし、すでに実装されていて、アプリケーションに簡単に組み込むことができるソリューションがあります。これらは、ほとんどの場合、1行のコードを使って仕事をすることができます。

例えば、これらのライブラリを使用すると、次のようなことが簡単にできるようになります。

  • 今日、昨日などの日付の取得
  • 2年後や過去の日付を取得する。
  • 与えられた日付に特定の数字を加えるなど。

これらを1行のコードで行うことができます。ライブラリを見てみましょう。

(a). テンポ

Kotlin直感的なjava.util.Date拡張。

日付と時間を扱う最も簡単な方法です。Tempoでは以下のことが可能です。

  1. datetimeの取得と初期化
  2. 日付の比較
  3. 日付の加算・減算
  4. ユーザーフレンドリーな英語のような方法で日付を表示します。
    1. 日付の解析およびフォーマットなど

ステップ1: Tempoのインストール

dependencies {
implementation 'com.github.cesarferreira:tempo:0.7.0'
}

ステップ2: Tempoの使用

以下は、KotlinにおけるTempoの使用例です。

val now: Date = Tempo.now               //=> now
now + 1.week //=> next week
now - 2.days //=> day before yesterday
now + (3.weeks - 4.days + 5.hours) //=> somewhere in 2 and a half weeks

Tempo.tomorrow //=> tomorrow
Tempo.yesterday //=> yesterday
1.day.ago //=> yesterday
3.weeks.ago //=> 3 weeks ago
5.years.forward //=> five years in the future

日付コンポーネントを指定して初期化

Tempo.with(year = 1990, month = 1, day = 21)    //=> 1990/01/21
Tempo.with(year = 2019, month = 6, day = 26, hour = 18, minute = 58, second = 31, millisecond = 777)

日付成分を変更して初期化

Tempo.now.with(month = 12, day = 25)    //=> this year's christmas
Date().with(month = 12, day = 25) //=> this year's christmas

// shortcuts
Tempo.now.beginningOfYear //=> new year's day
Tempo.now.endOfYear //=> new year's eve

曜日・プロパティの確認

Tempo.now.isMonday
Tempo.now.isTuesday
Tempo.now.isWednesday
Tempo.now.isThursday
Tempo.now.isFriday
Tempo.now.isSaturday
Tempo.now.isSunday
Tempo.now.isWeekend
Tempo.now.isWeekday

Tempo.now.isToday // true
Tempo.tomorrow.isToday // false
Tempo.tomorrow.isTomorrow // true
Tempo.yesterday.isYesterday // true

フォーマットと解析

ここでは、Tempoを使った日付のフォーマットとパースの方法を紹介します。

5.minutes.forward.toString("yyyy-MM-dd HH:mm:ss")
//=> "2019-06-11 12:05:00"

"1988-03-02".toDate("yyyy-MM-dd")
//=> Tempo.with(year = 1988, month = 3, day = 2)

日付の比較

ここでは、Tempoを使ってkotlinで日付を比較する方法をご紹介します。

1.day.ago > 2.days.ago                  // true
1.day.ago in 2.days.ago..Tempo.now // true

リファレンス

完全なリファレンスはこちらをご覧ください。

Kotlin Android DateTime - 最も簡単に日付と時刻を扱う方法

それでは、Tempoの完全な例を見てみましょう。この例題では、Tempo の全てを学ぶことができます。

ステップ1:Tempoのインストール

前述の通り、Tempoをインストールします。

また、アプリレベルのbuild.gradleでViewBindingを有効にします。

   buildFeatures {
viewBinding true
}

ViewBindingを使用すると、kotlinコードでウィジェットを簡単に参照できるようになります。

ステップ2: レイアウトの作成

レイアウトには、ユーザーに結果を表示するためのリストビューを用意します。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivityの作成

MainActivityは、このプロジェクトの唯一のアクティビティです。簡単に説明します。

MainActivity.ktを作成します。

package info.camposha.mr_tempo_datetime

import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.cesarferreira.tempo.*
import info.camposha.mr_tempo_datetime.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding

private fun createDateExamples(): List<String> {
val examples = listOf(
"------ GET DATE,TIME ----",
"NOW: ${Tempo.now}",
"INITIALIZATION: ${Tempo.with(year = 1990, month = 1, day = 21)}",
"INITIALIZATION: ${Tempo.now.with(month = 12, day = 25)}",
"",
"------- USER FRIENDLY READABLE DATES -------",
"TOMORROW: ${Tempo.tomorrow}",
"YESTERDAY: ${Tempo.yesterday}",
"",
"------- ADD OR SUBTRACT DATES --------",
"1 WEEK FROM NOW: " + (Tempo.now.plus(1.week)),
"1 WEEK AGO: " + Tempo.now.minus(1.week),
"2 DAYS AGO: " + Tempo.now.minus(2.days),
"",
"------ TIME AGO ---------",
"A DAY AGO: ${1.day.ago}",
"3 WEEKS AGO: ${3.weeks.ago}",
"5 YEARS FORWARD: ${5.years.forward}",
"",
"------- SHORTCUTS -----",
"NEW YEAR: ${Tempo.now.beginningOfYear}",
"END OF YEAR: ${Tempo.now.endOfYear}",
"----CHECK DATE-----",
"IS MONDAY: ${Tempo.now.isMonday}",
"IS TUESDAY: ${Tempo.now.isTuesday}",
"IS WEDNESDAY: ${Tempo.now.isWednesday}",
"IS THURSDAY: ${Tempo.now.isThursday}",
"IS FRIDAY: ${Tempo.now.isFriday}",
"IS SATURDAY: ${Tempo.now.isSaturday}",
"IS SUNDAY: ${Tempo.now.isSunday}",
"IS WEEKEND: ${Tempo.now.isWeekend}",
"IS WEEKDAY: ${Tempo.now.isWeekday}",
"",
"------ FORMAT AND PARSE ------",
"${5.minutes.forward.toString("yyyy-MM-dd HH:mm:ss")}",
"${"1988-03-02".toDate("yyyy-MM-dd")}",
"",
"------ COMPARE -------",
"${1.day.ago > 2.days.ago}",
"${1.day.ago in 2.days.ago..Tempo.now}"

)
return examples
}

private fun populateListView(data: List<String>) {
binding.listView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, data)
binding.listView.setOnItemClickListener { _, _, i, _ ->
Toast.makeText(this@MainActivity,data[i],Toast.LENGTH_SHORT).show()
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
populateListView(createDateExamples())
}
}

実行

アンドロイドスタジオでコードを実行すると、以下のようになります。

Android DateTime Example

ダウンロード

ソースコードをこちらからダウンロードしてください。

(b). カランバ

Android用の便利なKotlin拡張機能のコレクションです。

Karambaは単なるdatetimeライブラリではなく、実際にはユーティリティーライブラリですが、アンドロイド開発でよく使われる機能性と並んで、使いやすいdatetime関数を備えています。

ステップ1: インストール

allprojects*gradleに追加します。

maven { url 'https://jitpack.io' }

次に以下を追加します。

implementation 'com.github.matteocrippa:karamba:1.2.0'

Step 2: Karamba の使用方法

Karamba`では、プロジェクトに役立つ様々な拡張機能のリストを提供しています。ここでは、拡張機能の種類ごとにリストを整理します。

一般

  • support(apiVersion), 現在のSDKが指定されたものまでである場合にのみコードを実行することができるラムダ。
  • supportKitkat(), kitkatがサポートされているかどうかをチェックし、コードを実行するラムダ。
  • supportLollipop(), lollipopがサポートされているかどうかをチェックしてコードを実行するラムダ

ビットマップ

  • base64(), 現在のビットマップの base64 表現を生成する。
  • resize(height, width), 現在のビットマップのサイズを新しいフォーマットに変更する。

ブール

  • toggle(), boolをトーグルとして扱い、値を反対のものに変更し、新しい値を返す(まだ変更できません)。
  • random(), ランダムなブール値を返し、新しい値を返す (これを変更することはまだできません)

日付

  • convertTo(format), 現在の日付を引数として与えられたカスタムフォーマットに変換する (例: dd-MM-yy HH:mm)
  • toCalendar(), 現在の日付を Calendar に変換します。
  • isFuture(), 日付が未来のものであればtrueを返します。
  • isPast(), 日付が過去であれば真を返す。
  • isToday(), 現在の日付が今日であるかどうかを返します。
  • isTomorrow(), 現在の日付が明日であればtrueを返す
  • isYesterday(), 現在の日付が昨日であるかどうかを返す
  • today(), 今日の日付を返す
  • tomorrow(), 明日の日付を返します。
  • yesterday(), 昨日の日付を返します。
  • hour(), 現在の日付の時間を数字で返します。
  • minute(), 現在の日付の分を数値で返す
  • second(), 現在の日付の秒を数値で返す
  • month(), 現在の日付の月を数値で返す
  • monthName(), 現在の日付の月を長い名前で返します。
  • year(), 現在の日付の年を数値で返す
  • day(), 現在の日付の日を数字で返す
  • dayOfWeek(), 現在の日付の曜日を数字で返す。
  • dayOfWeekName(), 現在の日付の曜日を文字列で返す
  • dayOfYear(), 現在の日付の年の日を数値で返す

ダブル

  • localCurrency(currency), 現在のdoubleを引数として渡された通貨フォーマットに変換する (例: EUR)
  • celsiusToFahrenheit():現在の倍数を華氏に変換する。
  • fahrenheitToCelsius():現在のdoubleをcelsiusに変換する。

Drawable

  • toBitmap(), 現在の Drawable を Bitmap に変換する。

Int

  • readableDistanceFromMeters(), 読み取り可能なメートル、キロメートルの距離のint量を変換します。
  • commaSeparatedId(), intの配列をコンマで区切られた項目の文字列に変換する。
  • random(), 指定された範囲の乱数を提供する (例: (0..10).random())

文字列

  • isValidEmail(), 現在の文字列が有効な電子メールであるかどうかを返す。
  • isUrl():現在の文字列が有効なURLであるかどうかを返す。
  • isNumeric(), 現在の文字列が数字を含むかどうかを返す。
  • isPhoneNumber(), 現在の文字列が電話番号を含むかどうかを返す
  • random(lenght), 指定された長さのランダムな文字列を返す。
  • toBitmap(), 現在のbase64文字列をビットマップに変換する。
  • ellipsize(chars), 現在の文字列を楕円形にして、定義された文字数で切り詰める。
  • toDate(format), 指定されたフォーマットを使用して、現在の文字列を Date オブジェクトに変換します。
  • plainText(), 現在の文字列からすべてのhtmlフォーマットを削除します。
  • toCamelCase(), 現在の文字列をキャメルケース化する。

ビュー

  • toBitmap(), 現在のビューを Bitmap に変換します。

(c). シンプルな日付

Android/Kotlin ライブラリ 日付と時刻を一般的なフォーマットに変換するライブラリです。

ステップ1: インストール

プロジェクトレベルの build.gradle で、以下のように設定します。

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}

アプリレベルの build.gradle にインストールします。

dependencies {
implementation 'com.github.sidhuparas:SimpleDate:2.1.0'
}

Step 2: 使用方法

各メソッドは、日付オブジェクトに対して使用できます。使用できる機能は以下の通りです。

日付と時刻の場合

date
.toDateTimeStandard() // 13 August 2019 21:55:11
.toDateTimeStandardIn12Hours() // 13 August 2019 9:55:11 PM
.toDateTimeStandardInDigits() // 13-08-2019 21:55:11
.toDateTimeStandardInDigitsAnd12Hours() // 13-08-2019 9:55:11 PM
.toDateTimeStandardConcise() // 13 Aug 2019 21:55:11
.toDateTimeStandardConciseIn12Hours() // 13 Aug 2019 9:55:11 PM
.toDateTimeYY() // 13 August 19 21:55:11
.toDateTimeYYIn12Hours() // 13 August 19 9:55:11 PM
.toDateTimeYYInDigits() // 13-08-19 21:55:11
.toDateTimeYYInDigitsAnd12Hours() // 13-08-19 9:55:11 PM
.toDateTimeYYConcise() // 13 Aug 19 21:55:11
.toDateTimeYYConciseIn12Hours() // 13 Aug 19 9:55:11 PM
.toZuluFormat() // 2019-08-19T21:16:55:11.926Z

時刻のみの場合

date
.toTimeStandard() // 21:55:11
.toTimeStandardWithoutSeconds() // 21:55
.toTimeStandardIn12Hours() // 9:55:11 PM
.toTimeStandardIn12HoursWithoutSeconds() // 9:55 PM

日付のみの場合

date
.toDateStandard() // 13 August 2019
.toDateStandardConcise() // 13 Aug 2019
.toDateStandardInDigits() // 13-08-2019
.toDateYY() // 13 August 19
.toDateYYConcise() // 13 Aug 19
.toDateYYInDigits() // 13-08-19
.toDateYMD() // 2019 August 13
.toDateYMDConcise() // 2019 Aug 13
.toDateYMDInDigits() // 2019-08-13
.toDateEMd() // Tue, Aug 13
.toDateEMYShort() // Tue, Aug 19
.toDateEMY() // Tuesday, August 2019

日にちのみの場合

date.toDay()                    // Tuesday

  • Kotlin:
   val date = Date()
println(date.toDateTimeStandard())
  • Java:
    Date date = new Date();
System.out.println(SimpleDateKt.toDateTimeStandard(date));

参考文献

https://github.com/sidhuparas/SimpleDate)を参照してください

(d). DateTimeUtils

ステップ1:インストール

DateTimeUtils ライブラリは、JitPackから入手できます。

まず、プロジェクトの build.gradle ファイルに JitPack の依存関係の行を追加します。

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}

そして、アプリモジュールの build.gradle ファイルの dependencies セクションに、以下の行を追加します。

implementation 'com.github.thunder413:DateTimeUtils:3.0'

ステップ2: 使用

DateTimeUtilsを使ってみましょう。いくつか例を見てみましょう。

setTimeZone

setTimeZone`では、タイムゾーンを定義することができます。

DateTimeUtils.setTimeZone("UTC");

formatDate

formatDateは、dateオブジェクトstringに、timeStamp`を日付に、またはその逆に変換するためのメソッドです。

日付の文字列を日付オブジェクトに変換

// MySQL/SQLite dateTime example
Date date = DateTimeUtils.formatDate("2017-06-13 04:14:49");
// Or also with / separator
Date date = DateTimeUtils.formatDate("2017/06/13 04:14:49");
// MySQL/SQLite date example
Date date = DateTimeUtils.formatDate("2017-06-13");
// Or also with / separator
Date date = DateTimeUtils.formatDate("2017/06/13");

日付オブジェクトから日付文字列への変換 MySQL/SQLite

String date = DateTimeUtils.formatDate(new Date());

timeStamp から Date オブジェクト

デフォルトでは、与えられたタイムスタンプはミリ秒とみなされますが、サーバーからタイムスタンプを取得した場合は、通常は秒単位になりますので、DateTimeUnits.SECONDSを指定して関数に伝えてください。

// Using milliseconds
Date date = DateTimeUtils.formatDate(1497399731000);
// Using seconds (Server timeStamp)
Date date = DateTimeUtils.formatDate(1497399731,DateTimeUnits.SECONDS);

formatWithStyle

formatWithStyle` は、最も一般的なスタイルを使用して、日付をローカライズされたフォーマットに解析することができます。

ローカライズされた日付へのDateオブジェクト

DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.FULL); // Tuesday, June 13, 2017
DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.LONG); // June 13, 2017
DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.MEDIUM); // Jun 13, 2017
DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.SHORT); // 06/13/17

地域化された日付への日付文字列

DateTimeUtils.formatWithStyle("2017-06-13", DateTimeStyle.FULL); // Tuesday, June 13, 2017
DateTimeUtils.formatWithStyle("2017-06-13", DateTimeStyle.LONG); // June 13, 2017
DateTimeUtils.formatWithStyle("2017-06-13", DateTimeStyle.MEDIUM); // Jun 13, 2017
DateTimeUtils.formatWithStyle("2017-06-13", DateTimeStyle.SHORT); // 06/13/17

formatWithPattern

formatWithPattern では、SimpleDateFormat` スキームに従った独自の解析パターンを定義できます。

Date string as source

DateTimeUtils.formatWithPattern("2017-06-13", "EEEE, MMMM dd, yyyy"); // Tuesday, June 13, 2017

ソースとしての日付オブジェクト

DateTimeUtils.formatWithPattern(new Date(), "EEEE, MMMM dd, yyyy"); // Tuesday, June 13, 2017

isToday

isToday` 与えられた日付が今日の日付であるかどうかを伝えます。

// Date object as source
boolean state = DateTimeUtils.isToday(new Date());
// Date String as source
boolean state = DateTimeUtils.isToday("2017-06-15 04:14:49");

isYesterday

isYesterday` 与えられた日付が昨日の日付であるかどうかを判定します。

// Date object as source
boolean state = DateTimeUtils.isYesterday(new Date());
// Date String as source
boolean state = DateTimeUtils.isYestrday("2017-06-15 04:14:49");

前後の週の取得

getPreviousWeekDate/getNextWeekDate 指定した日付から次の週、または前の週の日付を返します。また、カレンダー定数を使って曜日を設定することもできます。

// Date object as source
Date date = DateTimeUtils.getPreviousWeekDate(new Date(), Calendar.MONDAY);
// Date String as source
Date date = DateTimeUtils.getNextWeekDate("2017-06-15 04:14:49",Calendar.SUNDAY);

前月、翌月を取得する

getPreviousMonthDate/getNextMonthDate 指定された日付から、次の月または前の月の日付を返します。

// Date object as source
Date date = DateTimeUtils.getNextMonthDate(new Date());
// Date String as source
Date date = DateTimeUtils.getPreviousMonthDate("2017-06-15 04:14:49");

getDateDiff

getDateDiff 二つの日付の差を日、時、分、秒、ミリ秒単位で返します DateTimeUnits

// Dates can be date object or date string
Date date = new Date();
String date2 = "2017-06-13 04:14:49";
// Get difference in milliseconds
int diff = DateTimeUtils.getDateDiff(date,date2, DateTimeUnits.MILLISECONDS);
// Get difference in seconds
int diff = DateTimeUtils.getDateDiff(date,date2, DateTimeUnits.SECONDS);
// Get difference in minutes
int diff = DateTimeUtils.getDateDiff(date,date2, DateTimeUnits.MINUTES);
// Get difference in hours
int diff = DateTimeUtils.getDateDiff(date,date2, DateTimeUnits.HOURS);
// Get difference in days
int diff = DateTimeUtils.getDateDiff(date,date2, DateTimeUnits.DAYS);

getTimeAgo

getTimeAgo は,与えられた日付からの経過時間を表示します.また,完全な文字列と短い文字列の2つの印刷モードを提供します.3 hours ago | 3h ago この文字列はローカライズされていますが、現時点ではFRとENの言語のみ利用可能です。もし、あなたの言語を追加する必要があれば、私に知らせてください 🙂

String timeAgo = DateTimeUtils.getTimeAgo(context,new Date()); // Full string style will be used
// Short string style
String timeAgo = DateTimeUtils.getTimeAgo(context,"new Date()",DateTimeStyle.AGO_SHORT_STRING );

formatTime

formatTimeでは、日付から時間を抽出することができます。デフォルトでは、0になると時間は表示されませんが、forceShowHours`パラメータを指定することで、時間の表示を強制することができます。

String time = DateTimeUtils.formatTime(new Date()); // 14:49 if hours equals 0 or 04:14:09 if hours witch is wrong when use it on time rather than a duration
// Solution >> force hours display
String time = DateTimeUtils.formatTime(new Date(),true);
// And you can also supplie a date string
String time = DateTimeUtils.formatTime("2017-06-13 04:14:49"); // 04:14:49

millisToTime

millisToTime` は継続時間を扱うときに便利で、例えばプレイヤーの継続時間や現在の再生位置を人間が読める値で表示したいときに使用します。

String time = DateTimeUtils.millisToTime(2515); // It take millis as an argument not seconds

timeToMillis

timeToMillis は、timeの文字列をmillseconds` に変換します。

int milliseconds = DateTimeUtils.timeToMillis("14:20"); // 860000

完全な例を示します。

MainActivity.java の例です。

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

import com.github.thunder413.datetimeutils.DateTimeStyle;
import com.github.thunder413.datetimeutils.DateTimeUnits;
import com.github.thunder413.datetimeutils.DateTimeUtils;

import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Date date = new Date();
DateTimeUtils.setDebug(true);

Log.d(TAG,"Date To String >> "+DateTimeUtils.formatDate(new Date()));
DateTimeUtils.setTimeZone("GMT");
Log.d(TAG,"Previous month from today >> "+DateTimeUtils.formatDate(DateTimeUtils.getPreviousMonthDate(new Date())));
Log.d(TAG,"Next month from today >> "+DateTimeUtils.formatDate(DateTimeUtils.getNextMonthDate(new Date())));
Log.d(TAG,"Previous >> "+DateTimeUtils.formatDate(DateTimeUtils.getPreviousWeekDate(DateTimeUtils.formatDate(" 2019-05-06 22:32:57"), Calendar.MONDAY)));
Log.d(TAG,"String To Date >> "+DateTimeUtils.formatDate("2017-06-13 04:14:49"));
Log.d(TAG,"IsToDay >> "+DateTimeUtils.isToday(new Date()));
Log.d(TAG,"IsToDay String >> "+DateTimeUtils.isToday("2017-06-15 04:14:49"));
Log.d(TAG,"IsYesterdaY Date >> "+DateTimeUtils.isYesterday(new Date()));
Log.d(TAG,"IsYesterdaY String >> "+DateTimeUtils.isYesterday("2017-06-12 04:14:49"));
Log.d(TAG,"TimeAgo String >> "+DateTimeUtils.getTimeAgo(this,"2017-06-13 04:14:49"));
Log.d(TAG,"TimeAgo Date >> "+DateTimeUtils.getTimeAgo(this,date));
Log.d(TAG,"Diff in milliseconds >> "+DateTimeUtils.getDateDiff(new Date(),DateTimeUtils.formatDate("2017-06-13 04:14:49"), DateTimeUnits.MILLISECONDS));
Log.d(TAG,"Diff in seconds >> "+DateTimeUtils.getDateDiff(new Date(),DateTimeUtils.formatDate("2017-06-13 04:14:49"), DateTimeUnits.SECONDS));
Log.d(TAG,"Diff in minutes >> "+DateTimeUtils.getDateDiff(new Date(),DateTimeUtils.formatDate("2017-06-13 04:14:49"), DateTimeUnits.MINUTES));
Log.d(TAG,"Diff in hours >> "+DateTimeUtils.getDateDiff(new Date(),DateTimeUtils.formatDate("2017-06-13 04:14:49"), DateTimeUnits.HOURS));
Log.d(TAG,"Diff in days >> "+DateTimeUtils.getDateDiff(new Date(),DateTimeUtils.formatDate("2017-06-13 04:14:49"), DateTimeUnits.DAYS));
Log.d(TAG,"Extract time from date >> "+DateTimeUtils.formatTime(new Date()));
Log.d(TAG,"Extract time from dateString >> "+DateTimeUtils.formatTime("2017-06-13 04:14:49"));
Log.d(TAG,"Millis to time >> "+DateTimeUtils.millisToTime(25416660));
Log.d(TAG,"Time to millis >> "+DateTimeUtils.timeToMillis("14:20"));
Log.d(TAG,"Revert Millis to time >> "+DateTimeUtils.millisToTime(860000));
Log.d(TAG,"FormatWithStyle FULL >> "+DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.FULL));
Log.d(TAG,"FormatWithStyle LONG >> "+DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.LONG));
Log.d(TAG,"FormatWithStyle MEDIUM >> "+DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.MEDIUM));
Log.d(TAG,"FormatWithStyle SHORT >> "+DateTimeUtils.formatWithStyle(new Date(), DateTimeStyle.SHORT));

}

}

参考文献

Javadocs は hereにあります。