我尝试使用SimpleDateFormat格式化时间间隔。SimpleDateFormat无法格式化日期间隔?
import java.text.*;
import java.util.*;
public class DateFormatTest {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
long interval = 1000;
System.out.println("Interval in millis: " + interval);
System.out.println("Expected result: 00:00:01");
System.out.println("Result using Date and SimpleDateFormat: " +
sdf.format(new Date(interval)));
}
}
我得到以下结果:
Interval in millis: 1000
Expected result: 00:00:01
Result using Date and SimpleDateFormat: 01:00:01
我在GMT + 1时区。但它不应该反映在结果中。
当然可以用System.out.printf来解决,但是我正在搜索的是原因。
SimpleDateFormat用于格式化日期,而不是间隔,因此它实际打印的是GMT + 1历元1000毫秒后的正确时间。您应该将SimpleDateFormat的时区设置为UTC –
对于24小时日期格式,也请使用“HH:mm:ss”,而不是“hh:mm:ss”。 hh是一个带有有趣后果的错误。 –
还有一个类似的问题,其中详细介绍了System.out.printf解决方案:[java中的Timemillisecond到hh:mm:ss格式](http://stackoverflow.com/questions/14169873/timemillisecond-to-hhmmss-format- in-java/14169970#14169970) –