Max*_*ler 2 java formatting datetime jodatime
我有输入,34600毫秒我想以格式00:00:34(HH:MM:SS)输出.
我应该在JDK/Joda时间看哪些课程?我需要这个是有效的,最好是线程安全的,以避免每次解析时的对象创建.
谢谢.
- 编辑 -
使用此代码生成时区敏感结果,如何确保格式化是"自然的",即使用绝对值.
import java.util.Locale;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class Test {
public static void main(String[] args) {
DateTimeFormatter fmt = DateTimeFormat.forPattern("kk:mm:ss").withLocale(new Locale("UTC"));
System.out.println(fmt.print(34600));
}
}
Run Code Online (Sandbox Code Playgroud)
结果在02:00:34 - + 2h是因为我的时区是GMT + 2.而预期的输出是00:00:34.
Rob*_*ska 10
对于Joda解决方案,请尝试一下(给出更新的问题):
PeriodFormatter fmt = new PeriodFormatterBuilder()
.printZeroAlways()
.minimumPrintedDigits(2)
.appendHours()
.appendSeparator(":")
.printZeroAlways()
.minimumPrintedDigits(2)
.appendMinutes()
.appendSeparator(":")
.printZeroAlways()
.minimumPrintedDigits(2)
.appendSeconds()
.toFormatter();
Period period = new Period(34600);
System.out.println(fmt.print(period));
Run Code Online (Sandbox Code Playgroud)
输出:
00:00:34
Run Code Online (Sandbox Code Playgroud)
关于您对线程安全的偏好:
PeriodFormatterBuilder本身是可变的而不是线程安全的,但它构建的格式化程序是线程安全且不可变的.
(来自PeriodFormatterBuilder文档)