我嘗試使用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) –