我想计算一个持续时间,而 1 天将包含 8 小时。 创建新的年表是正确的方法吗?
我确实尝试创建一个自定义年表并使用以下内容覆盖 assemble 方法:
int millisPerDay = 1000 * 60 * 60 * 8;
fields.days = new PreciseDurationField(DurationFieldType.days(), millisPerDay);
但是并没有达到预期的效果。
有什么建议吗?
提前谢谢
最佳答案
为了回答我自己的问题,以下是完整的工作年表类(class)(每天 8 小时)。 我将其发布在这里,以便它可能会帮助其他尝试解决类似问题的人。
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";
}
}
关于java - Jodatime - 定制年表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019448/