In den meisten Apps, die wir erstellen, sind Datum und Uhrzeit eine Funktion, die wir gerne verwenden. Die Standardoptionen von java.util funktionieren zwar gut, aber sie sind nicht sehr effektiv und für etwas so Grundlegendes benötigen sie in der Regel viele eigene Lösungen. Dies birgt die Gefahr von Fehlern in sich, da wir in unserem Projekt eine Menge Kesselsteincode hinzufügen. Es gibt jedoch Lösungen, die bereits implementiert wurden und die wir leicht in unsere Anwendungen einbauen können. Diese erledigen die Aufgabe meist mit einer einzigen Zeile Code.
Mit diesen Bibliotheken können Sie z.B. die folgenden Aufgaben leicht erledigen:
- Abfrage des Datums heute, gestern usw.
- Abrufen des Datums in 2 Jahren oder in der Vergangenheit.
- Hinzufügen einer bestimmten Zahl zu einem bestimmten Datum usw.
Sie erledigen diese Aufgaben mit einer einzigen Zeile Code. Schauen wir uns die Bibliotheken an:
(a). Tempo
Kotlin intuitive java.util.Date Erweiterungen.
Der einfachste Weg, um mit Datum und Uhrzeit zu arbeiten. Durch Tempo können Sie:
- Datetime abrufen und initialisieren.
- Daten vergleichen.
- Daten addieren/subtrahieren.
- Datum in einer benutzerfreundlichen, englischen Art und Weise anzeigen.
- Parsen und Formatieren von Daten usw.
Schritt 1: Tempo installieren
dependencies {
implementation 'com.github.cesarferreira:tempo:0.7.0'
}
Schritt 2: Tempo verwenden
Hier ein Beispiel für die Verwendung von Tempo in Kotlin:
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
Initialisieren durch Angabe von Datumskomponenten
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)
Initialisieren durch Ändern von Datumskomponenten
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
Wochentag / Eigenschaften prüfen
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
Formatieren und Parsen
So formatieren und parsen Sie Datumsangaben mit 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)
Datumsangaben vergleichen
Hier sehen Sie, wie Sie Datumsangaben in Kotlin mit Tempo vergleichen:
1.day.ago > 2.days.ago // true
1.day.ago in 2.days.ago..Tempo.now // true
Referenz
Die vollständige Referenz finden Sie hier.
Kotlin Android DateTime - Die einfachste Art, mit Datum und Uhrzeit zu arbeiten
Schauen wir uns ein vollständiges Tempo-Beispiel an. In diesem Beispiel wird alles gezeigt, was Tempo zu bieten hat.
Schritt 1: Tempo installieren
Installieren Sie Tempo, wie wir es oben gesehen haben.
Außerdem werden wir ViewBinding in der App-Ebene build.gradle aktivieren:
buildFeatures {
viewBinding true
}
ViewBinding ermöglicht es uns, Widgets in unserem Kotlin-Code einfach zu referenzieren.
Schritt 2: Layout erstellen
Unser Layout wird eine Listenansicht haben, die unsere Ergebnisse für den Benutzer darstellen wird.
<?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 erstellen
MainActivity ist unsere einzige Aktivität im Projekt. Sie ist einfach zu erklären:
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())
}
}
Ausführen
Führen Sie den Code in android studio aus und Sie erhalten das folgende Ergebnis:
Herunterladen
Laden Sie den Quellcode hier herunter.
(b). Karamba
Eine Sammlung von nützlichen Kotlin-Erweiterungen für Android.
Karamba ist nicht nur eine Datetime-Bibliothek, sondern eigentlich eine Utility-Bibliothek, die neben einigen häufig verwendeten Funktionen in der Android-Entwicklung auch einige einfach zu verwendende Datetime-Funktionen enthält.
Schritt 1: Installieren
Hinzufügen zu gradle in allprojects.
maven { url 'https://jitpack.io' }
Dann fügen Sie Folgendes hinzu
implementation 'com.github.matteocrippa:karamba:1.2.0'
Schritt 2: Wie man Karamba benutzt
Karamba
bietet Ihnen eine Liste verschiedener und nützlicher Erweiterungen für Ihr Projekt, hier die Liste geordnet nach dem Typ der Erweiterung.
Allgemein
support(apiVersion)
, Lambda, das es erlaubt, Code nur dann auszuführen, wenn das aktuelle SDK der angegebenen Version entsprichtsupportKitkat()
, Lambda, das prüft, ob Kitkat unterstützt wird und den Code ausführtsupportLollipop()
, Lambda, das prüft, ob Lollipop unterstützt wird, und den Code ausführt
Bitmap
base64()
, erzeugt eine base64-Darstellung der aktuellen Bitmapresize(height, width)
, passt die Größe des aktuellen Bitmaps an das neue Format an
Boolean
toggle()
, behandelt den bool als toogle, ändert den Wert in das Gegenteil, dann wird der neue Wert zurückgegeben (noch nicht möglich, dies zu ändern)random()
, gibt einen zufälligen booleschen Wert zurück, dann wird der neue Wert zurückgegeben (noch nicht möglich, dies zu ändern)
Datum
convertTo(format)
, konvertiert das aktuelle Datum in ein als Argument angegebenes benutzerdefiniertes Format (z.B.dd-MM-yy HH:mm
)toCalendar()
, wandelt das aktuelle Datum in das FormatCalendar
umisFuture()
, gibt true zurück, wenn das Datum in der Zukunft liegtisPast()
, gibt true zurück, wenn das Datum in der Vergangenheit liegtisToday()
, gibt zurück, ob das aktuelle Datum heute istisTomorrow()
, gibt zurück, wenn das aktuelle Datum morgen istisYesterday()
, gibt zurück, wenn das aktuelle Datum gestern isttoday()
, gibt das heutige Datum zurücktomorrow()
, gibt das Datum von morgen zurückyesterday()
, gibt das Datum von gestern zurückhour()
, gibt die Stunde des aktuellen Datums als Zahl zurückminute()
, gibt die Minuten des aktuellen Datums als Zahl zurücksecond()
, gibt die Sekunden des aktuellen Datums als Zahl zurückMonat()
, gibt das aktuelle Datum Monat als Zahl zurückMonatsname()
, gibt das aktuelle Datum Monat als langen Namen zurückJahr()
, gibt das aktuelle Datum Jahr als Zahl zurückday()
, gibt das aktuelle Datum Tag als Zahl zurückdayOfWeek()
, gibt das aktuelle Datum Wochentag als Zahl zurückdayOfWeekName()
, gibt das aktuelle Datum Wochentag als String zurückdayOfYear()
, gibt das aktuelle Datum Tag des Jahres als Zahl zurück
Double
localCurrency(currency)
, konvertiert das aktuelle Double in das als Argument übergebene Währungsformat (z.B.EUR
)celsiusToFahrenheit()
, wandelt das aktuelle Double in Fahrenheit um- FahrenheitToCelsius()`, wandelt das aktuelle Double in Celsius um
Drawable
toBitmap()
, wandelt das aktuelle Drawable inBitmap
um
Int
readableDistanceFromMeters()
, konvertiert eine int Anzahl von Metern in eine lesbare Meter, Kilometer EntfernungcommaSeparatedId()
, konvertiert ein Array von int, in einen String von durch Komma getrennten Elementenrandom()
, liefert eine Zufallszahl im angegebenen Bereich (z.B.(0..10).random()
)
Zeichenkette
isValidEmail()
, gibt zurück, ob die aktuelle Zeichenkette eine gültige E-Mail istisUrl()
, gibt zurück, ob die aktuelle Zeichenkette eine gültige Url istisNumeric()
, gibt zurück, ob die aktuelle Zeichenkette eine Zahl enthältisPhoneNumber()
, gibt zurück, ob die aktuelle Zeichenkette eine Telefonnummer enthältrandom(lenght)
, gibt eine zufällige Zeichenkette der angegebenen Länge zurücktoBitmap()
, konvertiert den aktuellen base64-String in ein Bitmapellipsize(chars)
, verkleinert die aktuelle Zeichenkette und schneidet sie bei einer bestimmten Anzahl von Zeichen abtoDate(format)
, konvertiert den aktuellen String in einDate
-Objekt unter Verwendung des angegebenen FormatsplainText()
, entfernt alle html-Formatierungen aus der aktuellen ZeichenkettetoCamelCase()
, wandelt die aktuelle Zeichenkette in Großbuchstaben um
Ansicht
toBitmap()
, konvertiert aktuelle Ansicht inBitmap
.
(c). SimpleDate
Android/Kotlin Bibliothek zum Formatieren von Datum und Uhrzeit in gängige Formate.
Schritt 1: Installieren
In der Projektebene build.gradle
:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
In app-level build.gradle
:
dependencies {
implementation 'com.github.sidhuparas:SimpleDate:2.1.0'
}
Schritt 2: Verwendung
Sie können die Methoden auf ein Datumsobjekt anwenden. Im Folgenden sind die verfügbaren Funktionen aufgeführt:
Für Datum und Uhrzeit
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
Nur für die Uhrzeit
date
.toTimeStandard() // 21:55:11
.toTimeStandardWithoutSeconds() // 21:55
.toTimeStandardIn12Hours() // 9:55:11 PM
.toTimeStandardIn12HoursWithoutSeconds() // 9:55 PM
Nur für Datum
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
Nur für den Tag
date.toDay() // Tuesday
Beispiele.
- Kotlin:
val date = Date()
println(date.toDateTimeStandard())
- Java:
Date date = new Date();
System.out.println(SimpleDateKt.toDateTimeStandard(date));
Referenz
Vollständige Referenz finden Sie hier.
(d). DateTimeUtils
Schritt 1: Installieren
Die DateTimeUtils Bibliothek ist verfügbar von JitPack.
Fügen Sie zunächst die JitPack-Abhängigkeitszeile in die Datei build.gradle
Ihres Projekts ein:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Und dann fügen Sie einfach die folgende Zeile in den Abschnitt dependencies
Ihrer App-Modul-Datei build.gradle
ein:
implementation 'com.github.thunder413:DateTimeUtils:3.0'
Schritt 2: Verwenden
Verwenden Sie DateTimeUtils. Schauen wir uns einige Beispiele an.
setTimeZone
Mit setTimeZone
können Sie Ihre Zeitzone definieren, standardmäßig ist es UTC
.
DateTimeUtils.setTimeZone("UTC");
formatDate
formatDate
ist eine Methode, die es erlaubt, Datumsobjekt
in String
oder timeStamp
in Datum zu konvertieren und umgekehrt.
Datumsstring in Datumsobjekt
// 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");
Datumsobjekt in Datumsstring MySQL/SQLite
String date = DateTimeUtils.formatDate(new Date());
timeStamp zu Date-Objekt
Standardmäßig wird der angegebene Zeitstempel in Millisekunden betrachtet, aber falls Sie den Zeitstempel vom Server abgerufen haben, der normalerweise in Sekunden ist, geben Sie DateTimeUnits.SECONDS
an, um die Funktion darüber zu informieren
// Using milliseconds
Date date = DateTimeUtils.formatDate(1497399731000);
// Using seconds (Server timeStamp)
Date date = DateTimeUtils.formatDate(1497399731,DateTimeUnits.SECONDS);
formatWithStyle
formatWithStyle` erlaubt es, das Datum in ein lokalisiertes Format zu parsen und dabei den gängigsten Stil zu verwenden
Date Objekt zu lokalisiertem Datum
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
Date string zu lokalisiertem Datum
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
Mit formatWithPattern
können Sie Ihr eigenes Parse-Muster nach dem Schema von SimpleDateFormat
definieren
Datumszeichenfolge als Quelle
DateTimeUtils.formatWithPattern("2017-06-13", "EEEE, MMMM dd, yyyy"); // Tuesday, June 13, 2017
Datumsobjekt als Quelle
DateTimeUtils.formatWithPattern(new Date(), "EEEE, MMMM dd, yyyy"); // Tuesday, June 13, 2017
isToday
isToday` Ermittelt, ob ein gegebenes Datum ein heutiges Datum ist oder nicht
// 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` Ermittelt, ob ein gegebenes Datum das Datum von gestern ist oder nicht
// Date object as source
boolean state = DateTimeUtils.isYesterday(new Date());
// Date String as source
boolean state = DateTimeUtils.isYestrday("2017-06-15 04:14:49");
Vorherige nächste Woche erhalten
getPreviousWeekDate/getNextWeekDate
Gibt das Datum der nächsten oder vorherigen Woche von einem gegebenen Datum zurück und erlaubt es auch, den Wochentag mit Hilfe der Kalenderkonstante zu setzen.
// 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);
Vorherigen nächsten Monat holen
getPreviousMonthDate/getNextMonthDate` Liefert das Datum des nächsten oder vorherigen Monats ab einem bestimmten Datum.
// 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
liefert die Differenz zwischen zwei Daten in Tagen, Stunden, Minuten, Sekunden oder Millisekunden 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 gibt die verstrichene Zeit seit einem gegebenen Datum aus, es bietet auch zwei Druckmodi an, die volle und die kurze Zeichenkette
eg . 3 hours ago | 3h ago`. Die Strings sind lokalisiert, aber im Moment sind nur die Sprachen FR und EN verfügbar. Wenn Sie Ihre Sprache hinzufügen möchten, lassen Sie es mich einfach wissen 🙂
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
erlaubt es Ihnen, die Zeit aus dem Datum zu extrahieren. Standardmäßig zeigt es die Stunden nicht an, wenn sie gleich 0
sind, aber Sie können den Parameter forceShowHours
angeben, um die Anzeige der Stunden zu erzwingen
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
Der Parameter millisToTime
ist nützlich, wenn man mit Zeitdauer zu tun hat und z.B. die Dauer des Spielers oder die aktuelle Abspielposition in einem für Menschen lesbaren Wert anzeigen möchte.
String time = DateTimeUtils.millisToTime(2515); // It take millis as an argument not seconds
timeToMillis
timeToMillis
erlaubt die Konvertierung von time
in millseconds
.
int milliseconds = DateTimeUtils.timeToMillis("14:20"); // 860000
Beispiel
Hier ist ein vollständiges Beispiel:
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));
}
}
Referenz
Javadocs sind hier.