JodaTime - Cronología personalizada
Pregunta
Me gustaría para calcular una duración mientras que 1 día constará de 8 horas. Es la creación de una nueva cronología es el enfoque correcto?
Yo trato de crear una cronología costumbre y reemplazar el método de montar con algo como:
int millisPerDay = 1000 * 60 * 60 * 8;
fields.days = new PreciseDurationField(DurationFieldType.days(), millisPerDay);
Sin embargo, no tuvo el efecto deseado.
¿Alguna sugerencia?
Gracias de antemano
Solución
Para responder a mi propia pregunta, a raíz de una clase Cronología de trabajo completo (por 8 horas día). Estoy publicar aquí lo que podría ayudar a otras personas que tratar de resolver problemas similares.
import org.joda.time.Chronology;
import org.joda.time.DateTimeZone;
import org.joda.time.DurationFieldType;
import org.joda.time.field.PreciseDurationField;
import org.joda.time.chrono.AssembledChronology;
import org.joda.time.chrono.GregorianChronology;
public final class EightHoursDayChronology extends AssembledChronology {
private static final EightHoursDayChronology INSTANCE_UTC;
static{
INSTANCE_UTC = new EightHoursDayChronology(GregorianChronology.getInstanceUTC());
}
public static EightHoursDayChronology getInstance(){
return INSTANCE_UTC ;
}
private EightHoursDayChronology(Chronology base) {
super(base, null);
}
@Override
protected void assemble(org.joda.time.chrono.AssembledChronology.Fields fields) {
int millisPerDay = 1000 * 60 * 60 * 8 ;
fields.days = new PreciseDurationField(DurationFieldType.days(), millisPerDay)
}
@Override
public Chronology withUTC() {
return INSTANCE_UTC ;
}
@Override
public Chronology withZone(DateTimeZone zone) {
throw new UnsupportedOperationException("Method was not implemented");
}
@Override
public String toString() {
return "EightHoursDayChronology";
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow