2012-04-13 18 views
6

¿Cómo podemos visualizar el tiempo transcurrido con solo 1 campo?JodaTime PeriodFormat, tiempo transcurrido con solo 1 campo

Por ejemplo

  • Periodo = 1 año 4 meses y 5 días ==> Resultado = "1 Año atrás"
  • Periodo = 3 Meses 5 Días ==> Resultado = "3 Meses atrás"
  • Periodo = 4 horas 5 minutos ==> Resultado = "hace 4 Horas"

así que sólo quiero el mayor campo disponible.

+0

@JonSkeet - Me preguntaba cómo deshacerse de esos colores! – assylias

Respuesta

0

El algoritmo obvia sería para probar si el año> 0, en cuyo caso se utiliza, si no probar si mes> 0 etc. que podría haber algo más elegante, sino que funcionaría en menos de 15 líneas de código ...

2

No hay ningún método en Joda-Time para hacer esto, por lo que tendrá que probar cada campo manualmente.

1

esto funcionará

val startDate = new DateTime(millis).withZone(dateTimeZone) 
val endDate = new DateTime(dateTimeZone) 

val period = new Period(startDate, endDate) 

val localized = PeriodFormat.wordBased(localeLanguageCode).print(period) 
val splitted = localized.split(",|and") 

Por lo tanto, el valor dividido será una matriz que contiene los segmentos de época, de un periodo mayor al inferior.

The Head of the array es el valor que está buscando.

slitted.head + "Ago." 

* Debe cambiar el patrón de expresión en el método split dependiendo de su lugar o si usted está usando un formateador personalizado en lugar de la que viene por defecto (PeriodFormatterBuilder)

Ex. Matriz ("4 años", "2 meses", "5 días", "18 horas", "15 minutos", "10 segundos", "50 milisegundos")

Cuestiones relacionadas