Dans la plupart des applications que nous construisons, la date et l'heure est une fonctionnalité que nous avons tendance à utiliser. Les options standard offertes par java.util fonctionnent bien mais elles ne sont pas tout à fait efficaces et pour quelque chose d'aussi basique, elles ont tendance à nécessiter beaucoup de solutions personnalisées. Cela introduit des possibilités d'erreurs car nous ajoutons beaucoup de code passe-partout dans notre projet. Mais il existe des solutions qui ont déjà été mises en œuvre et que nous pouvons facilement intégrer dans nos applications. Elles ont tendance à faire le travail pour nous en utilisant une seule ligne de code.
Par exemple, avec ces bibliothèques, vous serez en mesure d'effectuer facilement les opérations suivantes :
- Obtenir la date d'aujourd'hui, d'hier, etc.
- Obtenir la date dans 2 ans ou dans le passé.
- Ajouter un certain nombre à une date donnée, etc.
Vous faites tout cela avec une seule ligne de code. Examinons les bibliothèques :
(a). Tempo
Kotlin intuitive java.util.Date extensions.
Le moyen le plus simple de travailler avec la date et l'heure. Grâce à Tempo, vous pouvez :
- Obtenir et initialiser la date et l'heure.
- Comparer des dates.
- Ajouter/Soustraire des dates.
- afficher la date d'une manière conviviale, comme en anglais.
- Analyser et formater les dates, etc.
Étape 1 : Installer Tempo
dependencies {
implementation 'com.github.cesarferreira:tempo:0.7.0'
}
Etape 2 : Utiliser Tempo
Voici des exemples d'utilisation de Tempo en 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
Initialiser en spécifiant les composants de la date.
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)
Initialiser en modifiant les composants de la date
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
Vérifier le jour de la semaine / les propriétés
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
Formatage et analyse syntaxique
Voici comment formater et analyser les dates à l'aide de 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)
Comparer des dates
Voici comment vous comparez des dates en kotlin en utilisant Tempo :
1.day.ago > 2.days.ago // true
1.day.ago in 2.days.ago..Tempo.now // true
Référence
Trouvez la référence complète ici.
Kotlin Android DateTime - La façon la plus simple de travailler avec la date et l'heure
Regardons un exemple complet de Tempo. Cet exemple vous apprendra tout ce que Tempo a à offrir.
Étape 1 : Installer Tempo
Installez Tempo comme nous l'avons vu ci-dessus.
Nous allons également activer ViewBinding au niveau de l'application build.gradle :
buildFeatures {
viewBinding true
}
ViewBinding va nous permettre de référencer facilement les widgets dans notre code kotlin.
Étape 2 : Créer une mise en page
Notre layout aura une listview qui rendra nos résultats à l'utilisateur.
<?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>
Créer MainActivity
MainActivity est notre seule activité dans le projet. Elle est slef explicative :
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())
}
}
Exécuter
Exécutez le code dans android studio et vous obtiendrez ce qui suit :
Télécharger
Téléchargez le code source ici.
(b). Karamba
Une collection d'extensions Kotlin utiles pour Android.
Karamba n'est pas seulement une bibliothèque de date, c'est en fait une bibliothèque d'utilitaires mais elle possède des fonctions de date faciles à utiliser ainsi que des fonctionnalités couramment utilisées dans le développement Android.
Étape 1 : Installation
Ajouter à gradle dans allprojects.
maven { url 'https://jitpack.io' }
puis ajouter ceci
implementation 'com.github.matteocrippa:karamba:1.2.0'
Étape 2 : Comment utiliser Karamba
Karamba
vous fournit une liste d'extensions différentes et utiles pour votre projet, ici la liste organisée par le type étendu.
Général
support(apiVersion)
, lambda qui vous permet d'exécuter le code seulement si le SDK actuel est à jour avec celui spécifiésupportKitkat()
, lambda qui vérifie si kitkat est supporté et exécute le code.supportLollipop()
, lambda qui vérifie si lollipop est supporté et exécute le code.
Bitmap
base64()
, produit une représentation base64 du bitmap actuelresize(height, width)
, redimensionne le bitmap actuel au nouveau format
Booléen
toggle()
, manipule le booléen comme un toogle en changeant la valeur en une valeur opposée, puis la nouvelle valeur est retournée (pas encore possible de changer ceci)random()
, retourne une valeur booléenne aléatoire, puis la nouvelle valeur est retournée (pas encore possible de changer ceci)
Date
convertTo(format)
, convertit la date courante en un format personnalisé fourni en argument (par exemple,dd-MM-yy HH:mm
)toCalendar()
, convertit la date courante enCalendar
.isFuture()
, retourne vrai si la date est dans le futur.isPast()
, retourne vrai si la date est dans le passéisToday()
, indique si la date est aujourd'hui.isTomorrow()
, renvoie l'information si la date est demain.isYesterday()
, renvoie une information sur la date d'hier.today()
, renvoie la date d'aujourd'huitomorrow()
, renvoie la date de demain.yesterday()
, renvoie la date d'hier.hour()
, renvoie l'heure de la date actuelle sous forme de nombre.minute()
, renvoie les minutes de la date actuelle sous forme de nombre.second()
, renvoie les secondes de la date actuelle sous forme de nombre.month()
, renvoie le mois de la date actuelle sous forme de nombre.monthName()
, Retourne le mois de la date courante sous forme de nom long.year()
, renvoie l'année de la date actuelle sous forme de nombre.day()
, renvoie le jour de la date actuelle sous forme de nombre.dayOfWeek()
, renvoie le jour de la semaine de la date courante sous forme de nombre.dayOfWeekName()
, retourne le jour de la semaine de la date courante sous forme de chaîne de caractères.dayOfYear()
, renvoie le jour de l'année à la date actuelle sous forme de nombre.
Double
localCurrency(currency)
, convertit le double actuel au format de la devise passée en argument (ex.EUR
)celsiusToFahrenheit()
, convertit le double actuel en fahrenheit.fahrenheitToCelsius()
, convertit le double actuel en Celsius.
Dessinable
toBitmap()
, convertit le dessinable actuel enBitmap
.
Int
readableDistanceFromMeters()
, convertit un nombre entier de mètres en une distance lisible en kilomètres.commaSeparatedId()
, convertit un tableau d'int, en une chaîne d'éléments séparés par des virgules.random()
, fournit un nombre aléatoire dans l'intervalle fourni (par exemple(0..10).random()
)
Chaîne
isValidEmail()
, retourne si la chaîne actuelle est un email valideisUrl()
, vérifie si la chaîne actuelle est une url valide.isNumeric()
, vérifie si la chaîne de caractères actuelle contient un nombre.isPhoneNumber()
, vérifie que la chaîne de caractères actuelle contient un numéro de téléphone.random(lenght)
, renvoie une chaîne aléatoire d'une longueur donnée.toBitmap()
, convertit la chaîne de caractères en base64 en Bitmap.ellipsize(chars)
, élabore la chaîne de caractères actuelle, en la tronquant au nombre de caractères défini.toDate(format)
, convertit la chaîne courante en un objetDate
en utilisant le format fourni.plainText()
, supprime tout le formatage html de la chaîne de caractères courante.toCamelCase()
, met la chaîne de caractères actuelle en casse camel.
Vue
toBitmap()
, convertit la vue actuelle enBitmap
.
(c). SimpleDate
Bibliothèque Android/Kotlin pour formater la date et l'heure dans des formats courants.
Étape 1 : Installation
Dans le fichier build.gradle
du projet :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Au niveau de l'application build.gradle
:
dependencies {
implementation 'com.github.sidhuparas:SimpleDate:2.1.0'
}
Étape 2 : Comment utiliser
Vous pouvez utiliser les méthodes sur un objet date. Voici les fonctions disponibles :
Pour la date et l'heure
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
Pour l'heure seulement
date
.toTimeStandard() // 21:55:11
.toTimeStandardWithoutSeconds() // 21:55
.toTimeStandardIn12Hours() // 9:55:11 PM
.toTimeStandardIn12HoursWithoutSeconds() // 9:55 PM
Pour la date seulement
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
Pour le jour seulement
date.toDay() // Tuesday
Exemples
Kotlin :
val date = Date()
println(date.toDateTimeStandard())
- Java :
Date date = new Date();
System.out.println(SimpleDateKt.toDateTimeStandard(date));
Référence
Trouver la référence complète ici.
(d). DateTimeUtils
Etape 1 : Installation
La bibliothèque DateTimeUtils est disponible depuis JitPack.
Premièrement, ajoutez la ligne de dépendance de JitPack dans le fichier build.gradle
de votre projet :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Et ensuite, ajoutez simplement la ligne suivante à la section dependencies
du fichier build.gradle
de votre module d'application :
implementation 'com.github.thunder413:DateTimeUtils:3.0'
Étape 2 : Utilisation
Utilisez DateTimeUtils. Voyons quelques exemples.
setTimeZone
setTimeZone
vous permet de définir votre fuseau horaire par défaut c'est UTC
.
DateTimeUtils.setTimeZone("UTC");
formatDate
formatDate
est une méthode qui vous permet de convertir un date object
en string
ou un timeStamp
en date et vice-versa.
Chaîne de date en objet date
// 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");
Objet date vers chaîne de date MySQL/SQLite
String date = DateTimeUtils.formatDate(new Date());
timeStamp vers objet Date
Par défaut, il va considérer le timeStamp donné en millisecondes, mais dans le cas où vous avez récupéré le timeStamp du serveur qui sera généralement en secondes fournir DateTimeUnits.SECONDS
pour dire la fonction sur
// Using milliseconds
Date date = DateTimeUtils.formatDate(1497399731000);
// Using seconds (Server timeStamp)
Date date = DateTimeUtils.formatDate(1497399731,DateTimeUnits.SECONDS);
formatWithStyle
formatWithStyle
permet d'analyser la date dans un format localisé en utilisant le style le plus courant.
Objet Date pour la date localisée
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
Chaîne de date vers date localisée
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
permet de définir votre propre modèle d'analyse suivant le schéma SimpleDateFormat
.
Chaîne de date comme source
DateTimeUtils.formatWithPattern("2017-06-13", "EEEE, MMMM dd, yyyy"); // Tuesday, June 13, 2017
Objet date comme source
DateTimeUtils.formatWithPattern(new Date(), "EEEE, MMMM dd, yyyy"); // Tuesday, June 13, 2017
isToday
isToday
Dites si une date donnée est ou non la date du jour.
// 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
Indique si une date donnée est ou non la date d'hier.
// Date object as source
boolean state = DateTimeUtils.isYesterday(new Date());
// Date String as source
boolean state = DateTimeUtils.isYestrday("2017-06-15 04:14:49");
Obtenir la semaine précédente suivante
getPreviousWeekDate/getNextWeekDate
Renvoie la date de la semaine suivante ou précédente à partir d'une date donnée il permet également de définir le jour de la semaine en utilisant la constante du calendrier.
// 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);
Obtenir le mois suivant précédent
getPreviousMonthDate/getNextMonthDate
Renvoie la date du mois suivant ou précédent à partir d'une date donnée.
// 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
vous donner la différence entre deux date en jours, heures, minutes, secondes ou millisecondes 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
vous donne le temps écoulé depuis une date donnée, il offre aussi deux modes d'impression : la chaîne complète et la chaîne courte eg . 3 hours ago | 3h ago
les chaînes sont localisées mais pour le moment seules les langues FR et EN sont disponibles. Si vous souhaitez que votre langue soit ajoutée, faites-le moi savoir 🙂
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
vous permet d'extraire l'heure de la date par défaut il n'affichera pas les heures s'il est égal à 0
mais vous pouvez fournir le paramètre forceShowHours
pour forcer l'affichage des heures.
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
est utile lorsque vous traitez avec la durée et que vous voulez afficher par exemple la durée du lecteur ou la position de lecture actuelle en valeur lisible par l'homme.
String time = DateTimeUtils.millisToTime(2515); // It take millis as an argument not seconds
timeToMillis
timeToMillis
permet de convertir la chaîne time
en millsecondes
.
int milliseconds = DateTimeUtils.timeToMillis("14:20"); // 860000
Exemple
Voici un exemple complet :
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));
}
}
Référence
Les Javadocs sont disponibles ici.