En la mayoría de las aplicaciones que construimos, la fecha y la hora es una característica que tendemos a utilizar. Las opciones estándar que ofrece java.util funcionan bien pero no son del todo efectivas y para algo tan básico, tienden a necesitar muchas soluciones personalizadas. Esto introduce posibilidades de errores ya que añadimos mucho código boilerplate en nuestro proyecto. Pero hay soluciones que ya han sido implementadas, y que podemos incorporar fácilmente en nuestras aplicaciones. Estas tienden a hacer el trabajo por nosotros en su mayoría utilizando una sola línea de código.

Por ejemplo con estas librerías podrás realizar fácilmente lo siguiente:

  • Obtener la fecha de hoy, ayer, etc.
  • Obtener la fecha de dentro de 2 años o del pasado.
  • Añadir un número determinado a una fecha dada, etc.

Esto se hace con una sola línea de código. Veamos las librerías:

(a). Tempo

Kotlin intuitivo java.util.Date extensiones.

La forma más fácil de trabajar con la fecha y la hora. A través de Tempo puedes:

  1. Obtener e inicializar datetime.
  2. Comparar fechas.
    1. Sumar/restar fechas.
  3. Mostrar la fecha de una manera amigable y en inglés.
    1. Analizar y dar formato a las fechas, etc.

Paso 1: Instalar Tempo

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

Paso 2: Usar Tempo

Aquí hay un ejemplo de uso 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

Inicializar especificando los componentes de la fecha

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)

Inicializar cambiando los componentes de la fecha

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

Comprobar día de la semana / propiedades

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

Formatear y analizar

Así es como se formatean y parsean las fechas usando 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)

Comparar fechas

Aquí está cómo comparar fechas en kotlin usando Tempo:

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

Referencia

Encuentra la referencia completa aquí.

Kotlin Android DateTime - La forma más fácil de trabajar con la fecha y la hora

Veamos un ejemplo completo de Tempo. Este ejemplo enseñará todo lo que Tempo puede ofrecer.

Paso 1: Instalar tempo

Instalar Tempo como habíamos visto anteriormente.

También habilitaremos ViewBinding en el build.gradle a nivel de la app:

   buildFeatures {
        viewBinding true
    }

ViewBinding nos permitirá referenciar fácilmente los widgets en nuestro código kotlin.

Paso 2: Crear Layout

Nuestro layout tendrá un listview que mostrará nuestros resultados al usuario.

<?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>

Crear MainActivity

MainActivity es nuestra única actividad en el proyecto. Es muy explicativa:

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())
    }
}

Ejecutar

Ejecuta el Código en android studio y obtendrás lo siguiente:

Android DateTime Example

Descargar

Descargue el código fuente aquí.

(b). Karamba

Una colección de útiles extensiones de Kotlin para Android.

Karamba no es sólo una librería de datetime, en realidad es una librería de utilidades pero tiene algunas funciones de datetime fáciles de usar junto con algunas funcionalidades comúnmente usadas en el desarrollo de android.

Paso 1: Instalar

Añadir a gradle en allprojects

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

luego agrega esto

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

Paso 2: Cómo usar Karamba

Karamba le proporciona una lista de diferentes y útiles extensiones para su proyecto, aquí la lista organizada por el tipo extendido.

General

  • support(apiVersion), lambda que permite ejecutar el código sólo si el SDK actual es el especificado
  • supportKitkat(), lambda que comprueba si kitkat está soportado y ejecuta el código
  • supportLollipop(), lambda que comprueba si lollipop está soportado y ejecuta el código

Bitmap

  • base64(), produce una representación base64 del mapa de bits actual
  • resize(height, width), redimensiona el mapa de bits actual al nuevo formato

Booleano

  • toggle(), maneja el bool como un toogle cambiando el valor a uno opuesto, entonces se devuelve el nuevo valor (aún no es posible cambiar esto)
  • random(), devuelve un valor booleano aleatorio, luego se devuelve el nuevo valor (aún no es posible cambiar esto)

Fecha

  • ConvertTo(format), convierte la fecha actual a un formato personalizado proporcionado como argumento (por ejemplo, dd-MM-yy HH:mm`)
  • toCalendar(), convierte la fecha actual en Calendar`.
  • EsFuturo()`, devuelve true si la fecha está en el futuro
  • isPast()`, devuelve true si la fecha está en el pasado
  • isToday()`, devuelve si la fecha actual es hoy
  • isTomorrow()`, devuelve si la fecha actual es mañana
  • isYesterday()`, devuelve si la fecha actual es ayer
  • today(), devuelve la fecha de hoy
  • Mañana()`, devuelve la fecha de mañana
  • Ayer()`, devuelve la fecha de ayer
  • Hora()`, devuelve la hora de la fecha actual en forma de número
  • minuto(), devuelve la fecha actual minutos como número
  • second(), devuelve la fecha actual de los segundos como número
  • Mes()`, devuelve la fecha actual del mes como número
  • Mes()`, devuelve la fecha actual del mes como un nombre largo
  • year(), devuelve la fecha actual del año como un número
  • day(), devuelve la fecha actual del día como un número
  • dayOfWeek(), devuelve la fecha actual del día de la semana como número
  • DayOfWeekName()`, devuelve la fecha actual del día de la semana como una cadena
  • Día del año()`, devuelve la fecha actual del día del año como un número

Doble

  • localCurrency(currency), convierte el doble actual al formato de moneda pasado como argumento (ej. EUR)
  • CelsiusToFahrenheit()`, convierte el doble actual a fahrenheit
  • fahrenheitToCelsius()`, convierte el doble actual a celsius

Dibujable

  • toBitmap(), convierte el dibujable actual en Bitmap.

Int

  • readableDistanceFromMeters(), convierte una cantidad int de metros en un metro legible, kilómetros de distancia
  • commaSeparatedId(), convierte un array de int, en una cadena de elementos separados por comas
  • random(), proporciona un número aleatorio en el rango proporcionado (ej. (0..10).random())

Cadena

  • isValidEmail(), devuelve si la cadena actual es un correo electrónico válido
  • EsUrl()`, devuelve si la cadena actual es una url válida
  • isNumeric(), devuelve si la cadena actual contiene un número
  • isPhoneNumber(), devuelve si la cadena actual contiene un número de teléfono
  • random(lenght), devuelve una cadena aleatoria de la longitud proporcionada
  • ToBitmap()`, convierte la cadena actual en base64 en un mapa de bits
  • ellipsize(chars), ellipsize la cadena actual, truncando la cantidad de caracteres definida
  • toDate(format), convierte la cadena actual en un objeto Date utilizando el formato proporcionado
  • plainText(), elimina todo el formato html de la cadena actual
  • toCamelCase(), convierte la cadena actual en camel case

Ver

  • toBitmap(), convierte la vista actual en Bitmap.

(c). SimpleDate

Librería Android/Kotlin para formatear la fecha y la hora en formatos comunes.

Paso 1: Instalar

En el nivel de proyecto build.gradle:

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

En el nivel de aplicación build.gradle:

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

Paso 2: Cómo usar

Puedes utilizar los métodos en un objeto de fecha. A continuación están las funciones disponibles:

Para la fecha y la hora

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

Para la hora solamente

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

Para la fecha solamente

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

Sólo para el día

date.toDay()                    // Tuesday

Ejemplos

  • Kotlin:

   val date = Date()
   println(date.toDateTimeStandard())
  • Java:

    Date date = new Date();
    System.out.println(SimpleDateKt.toDateTimeStandard(date));

Referencia

Encuentra la referencia completa aquí.

(d). DateTimeUtils

Paso 1: Instalar

La biblioteca DateTimeUtils está disponible en JitPack.

Primero añade la línea de dependencia de JitPack en el archivo build.gradle de tu proyecto:

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

Y luego simplemente añade la siguiente línea a la sección dependencies de tu archivo build.gradle del módulo de la aplicación:

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

Paso 2: Usar

Utiliza DateTimeUtils. Veamos algunos ejemplos.

setTimeZone

setTimeZone te permite definir tu zona horaria por defecto es UTC

DateTimeUtils.setTimeZone("UTC");

formatDate

formatDate es un método que te permite convertir el objeto fecha en cadena o timeStamp en fecha y viceversa.

Cadena de fecha a objeto de fecha

// 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");

Objeto fecha a cadena de fecha MySQL/SQLite

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

timeStamp a objeto Date

Por defecto se considerará el timeStamp en milisegundos, pero en el caso de que hayas recuperado el timeStamp del servidor, que normalmente será en segundos, introduce DateTimeUnits.SECONDS para indicarle a la función lo siguiente

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

formatWithStyle

formatWithStyle` permite parsear la fecha en formato localizado usando el estilo más común

Objeto fecha a fecha localizada

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

Cadena de fecha a fecha localizada

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 permite definir tu propio patrón de análisis siguiendo el esquema de `SimpleDateFormat

Cadena de fechas como fuente

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

Objeto de fecha como fuente

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

isToday

isToday Indica si una fecha dada es o no una fecha de hoy

// 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 Indica si una fecha dada es o no una fecha de ayer

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

Obtener la próxima semana anterior

getPreviousWeekDate/getNextWeekDate Devuelve la fecha de la semana siguiente o de la anterior a partir de una fecha dada, también permite establecer el día de la semana utilizando la constante del calendario

// 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);

Obtener el siguiente mes anterior

getPreviousMonthDate/getNextMonthDate Devuelve la fecha del mes siguiente o anterior a partir de una fecha dada

// 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 te da la diferencia entre dos fechas en días, horas, minutos, segundos o milisegundos 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 te da el tiempo transcurrido desde una fecha dada, también ofrece dos modos de impresión: las cadenas completas y las cortas eg . 3 hours ago | 3h ago` las cadenas están localizadas pero por el momento sólo están disponibles en los idiomas FR y EN. Si necesitas que tu idioma se añada, házmelo saber 🙂

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 te permite extraer la hora de la fecha por defecto no muestra las horas si es igual a 0 pero puedes suministrar el parámetro forceShowHours para forzar la visualización de las horas

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

El parámetro millisToTime es útil cuando se trata de la duración y se quiere mostrar, por ejemplo, la duración del reproductor o la posición actual de la reproducción en un valor legible.

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

timeToMillis

timeToMillis permite convertir la cadena time en millseconds`.

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

Ejemplo

Aquí hay un ejemplo completo:

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));

    }

}

Referencia

Los Javadocs están disponibles aquí.

Categorizado en:

Etiquetado en: