Frage

Ich möchte eine Dauer berechnen, während 1 Tag 8 Stunden bestehen. eine neue Chronologie schafft ist der richtige Ansatz?

Ich habe versuchen, eine benutzerdefinierte Chronologie zu erstellen und das zusammenbauen Methode mit etwas außer Kraft setzen wie:

int millisPerDay = 1000 * 60 * 60 * 8;

fields.days = new PreciseDurationField(DurationFieldType.days(), millisPerDay);

Allerdings hat es nicht den gewünschten Effekt hat.

Irgendwelche Vorschläge?

Vielen Dank im Voraus

War es hilfreich?

Lösung

Um meine eigene Frage zu beantworten, finden Sie eine komplette Arbeits Chronologie Klasse (8 Stunden Tage). Ich bin Entsendung es hier so ist es andere Menschen helfen könnte, die versuchen, ähnliche Probleme zu lösen.


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";
    }

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top