2010-01-07 2 views
2

1 시간은 8 시간으로 계산되지만 기간은 계산하고 싶습니다. 새로운 연대기를 만드는 것이 올바른 방법입니까?조다 타임 - 맞춤형 연대기

int millisPerDay = 1000 * 60 * 60 * 8; 

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

이 원하는 효과가 없었 그러나 :

나는 사용자 정의 연표를 만들려고하고 같은과 조립 방법을 무시했다.

제안 사항?

(8 시간 일) 완전한 작업 연혁 클래스입니다 다음, 내 자신의 질문에 대답하기 위해 사전

답변

6

에 감사드립니다. 다른 사람들이 비슷한 문제를 해결하는 데 도움이되도록 여기에 게시하고 있습니다.


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

}