bin*_*ADa 5 java formatting scala duration jodatime
我想打印持续时间,以毫秒为单位,具有不同的格式规范,具体取决于其大小:
case (1) "H:mm" if duration < 10 hours
case (2) "HH:mm" if duration < 24 hours
case (3) "#d HH:mm" else (duration >= 24 hours)
Run Code Online (Sandbox Code Playgroud)
这意味着只有1小时的字段数字,持续时间低于10小时,
但有一个领先的日期字段时有2小时的字段数字!
例子:
case (1) "0:45" means 45 minutes,
"1:23" means 1 hour and 23 minutes,
case (2) "12:05" means 12 hours and 5 minutes and
case (3) "1d 05:09" means 1 day, 5 hours and 9 minutes
(= 29 hours and 9 minutes).
Run Code Online (Sandbox Code Playgroud)
我试过了
object JodaTest {
import org.joda.time._
private val pdf = {
import format._
val pfb = new PeriodFormatterBuilder()
.appendDays.appendSeparator("d ")
.printZeroAlways
.minimumPrintedDigits(2).appendHours.appendSeparator(":")
.appendMinutes
new PeriodFormatter(pfb.toPrinter, null)
}
def durstr(duration: Long): String =
pdf.print((new Period(duration)).normalizedStandard)
}
Run Code Online (Sandbox Code Playgroud)
这导致
2700000 => "00:45" but should be "0:45"
4980000 => "01:23" but should be "1:23"
43500000 => "12:05"
104940000 => "1d 05:09"
Run Code Online (Sandbox Code Playgroud)
但我不知道在情况(1)中如何省略两位数日表示的前导零,但同时强制在情况(3)中使用相同的PeriodFormat打印它.
是否有可能用一个org.joda.time.format.PeriodFormatter?
| 归档时间: |
|
| 查看次数: |
3626 次 |
| 最近记录: |