online joda examples dates current java jodatime

java - examples - jodatime online



JodaTime equivalente de DateUtils.truncate() (4)

Nunca he usado JodaTime antes, pero respondiendo a esta pregunta, Cómo obtener los días de semana ordinales en un mes .

Lo probé y se me ocurrió este código feo para desactivar todos los campos del día siguiente:

DateTime startOfMonth = input.withDayOfMonth(1) .withHourOfDay(0) // there .withMinuteOfHour(0) // has got to .withSecondOfMinute(0) // be a shorter way .withMillisOfSecond(0); // to do this

Donde el equivalente de Commons / Lang usando DateUtils sería

Date startOfMonth = DateUtils.truncate(input, Calendar.MONTH);

¿Cuál es el idioma preferido para hacer eso en JodaTime?


Echa un vistazo a DateMidnight .

DateTime startOfMonth = new DateTime(new DateMidnight(input.withDayOfMonth(1)));

Actualización: 2013-08-16 por JodaStephen: La versión 2.3 de Joda-Time desprecia a DateMidnight porque era una idea muy mala de una clase.

Así que use:

DateTime startOfMonth = input.withDayOfMonth(1).withTimeAtStartOfDay();


Joda Time también admite el método withFields en el tipo DateTime . Esto también se puede utilizar para crear una sintaxis corta:

new DateTime().withDayOfMonth(1).withFields(new LocalTime(0, 0));

En el código de producción, el argumento de withFields debe tener en cuenta a una constante.


Puede usar roundFloorCopy() para imitar DateUtils.truncate

Date truncateMonth = DateUtils.truncate(input, Calendar.MONTH); -> DateTime truncateMonth = input.dayOfMonth().roundFloorCopy(); Date truncateMinute = DateUtils.truncate(input, Calendar.MINUTE); -> DateTime truncateMinute = input.minuteOfDay().roundFloorCopy(); Date truncateHourOfDay = DateUtils.truncate(input, Calendar.HOUR_OF_DAY); -> DateTime truncateHourOfDay = input.hourOfDay().roundFloorCopy()


Utilice el método withMillisOfDay() para acortar la sintaxis.

DateTime startOfMonth = input.withDayOfMonth(1).withMillisOfDay(0);