¿Cuál es la mejor manera de utilizar el tiempo joda para manipular los datos mensuales?

StackOverflow https://stackoverflow.com/questions/2161793

  •  23-09-2019
  •  | 
  •  

Pregunta

Estoy tratando de trabajar con una serie de tiempo de datos mensuales. Es decir, no es un valor para cada mes, y no hay una fecha específica (o tiempo) asociado a él.

Me podría haber fijado arbitrariamente el día, en algún tiempo constante (por ejemplo, la medianoche del primer día del mes) entonces se utiliza un java.util.date o joda DateTime pero decidimos probar y hacer esto dentro del sistema de tipos joda.

Mi primer paso fue la creación de una clase que se extiende YearMonth AbstractPartial (por analogía a LocalDate). Ahora he llegado a la siguiente etapa de tratar de incrementar un YearMonth por varios meses. Podría escribir el código a mí mismo (añadiendo% 12) pero prefiero utilizar una forma de estilo Joda de hacer esto.

¿Qué código debo escribir, y donde debería en directo por lo que puedo añadir, por ejemplo, un niño de 13 mes o Period de 2 años para mi clase YearMonth? O voy por mal camino?

¿Fue útil?

Solución

El SVN-tiempo tiene una joda YearMonth clase, listo para v2.0.

Otros consejos

Año / Mes matemáticas tiene que ser hecho de la siguiente manera:

ym = (year*12+month)

Do your math on ym.  Add months or years, or whatever

year = ym / 12
month = ym % 12

No hay alternativa real. Esta es demostrablemente correcta y no hay alternativa en realidad será más simple. Algunos idiomas (como Python) tienen una función divmod que combina las dos últimas líneas de código, pero eso no cambia la esencia.

Tiene unidades (meses) que va a mostrar a la gente que el año-mes. Podría también ser astilleros-pies o horas-minutos o cualquier otro simple conversión a una base de dos partes.

DateTime currentInstant = new DateTime ();

// añadir un mes

currentInstant = currentInstant.plusMonths (1);

// añadir 2Y + 13M => 3Y 1 M

Periodo incPeriod = nuevo Periodo () plusYears (2) .plusMonths (13).;

currentInstant = currentInstant.plus (incPeriod);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top