【问题标题】:PeriodFormmater in joda timejoda time 中的 PeriodFormater
【发布时间】:2020-11-13 17:23:01
【问题描述】:

持续时间的格式是否可能如下所示。

  1. 8 小时将被视为一天。

  2. 5 天被视为一周

所以 28800*1000 秒的持续时间将在 periodformatting 上输出为 1d

【问题讨论】:

    标签: jodatime period periodformatter


    【解决方案1】:

    恐怕不能归结为格式问题。你必须自己做一些数学运算。

        Period p = Period.hours(61);
        
        int days = p.toStandardHours().getHours() / HOURS_PER_DAY;
        Period remaining = p.minusHours(days * HOURS_PER_DAY);
        int weeks = days / DAYS_PER_WEEK;
        days -= weeks * DAYS_PER_WEEK;
        
        System.out.println("" + weeks + " weeks " + days + " days " + remaining);
    

    输出:

    1 周 2 天 PT5H

    你可能已经猜到了,我假设这些常量:

    private static final int HOURS_PER_DAY = 8;
    private static final int DAYS_PER_WEEK = 5;
    

    我考虑转换回一个新的Period,以便可以申请PeriodFormatter,但我真的不认为这是一个好主意。 Period 表示一段物理时间,而不是工作时间等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      相关资源
      最近更新 更多