java - Jodatime - 定制年表

标签 java jodatime

我想计算一个持续时间,而 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/

相关文章:

java - 如何从时区字符串创建 DateTimeZone 对象?

java - 字符串.split ("_(B")

java - 用Java绘制图表,定期更新

java - spring-boot 1.5.4 如果消费者(kube pod)重新启动,Spring Cloud Stream 手动偏移提交行为

java - 我想要可见按钮已将其文本从 TextView 中删除

android - Joda 时间将 ISO8601 GMT 转换为本地时间

java.lang.IllegalArgumentException : Invalid format: "2018-08-24T��:��:��" is malformed at "��:��:��"

java - Joda-Time DateTime 更改时区?

java - 如何将 jodatime 持续时间转换为格式为 hh :mm:ss? 的字符串

java - 无法在回收器 View 上接受 float 输入