我在尝试让 DateFormat 库给我一个字符串时遇到问题,该字符串的日期格式为 2 毫秒而不是通常的 3。我意识到这更接近厘秒,但是 afaik Java 不支持。
这里有一些代码可以说明我遇到的问题。我希望它输出两毫秒,但它输出了三毫秒。
public class MilliSeconds {
private static final String DATE_FORMAT_2MS_Digits = "yyyy-MM-dd'T'HH:mm:ss.SS'Z'";
private static DateFormat dateFormat2MsDigits = new SimpleDateFormat(DATE_FORMAT_2MS_Digits);
public static void main( String[] args ){
long milliseconds = 123456789123l;
System.out.println(formatDate2MsDigits(new Date(milliseconds)));
}
public static String formatDate2MsDigits(Date date)
{
dateFormat2MsDigits.setCalendar(Calendar.getInstance(new SimpleTimeZone(0, "GMT")));
return dateFormat2MsDigits.format(date);
}}
输出:
1973-11-29T21:33:09.123Z
我可以只解析生成的字符串并删除我不需要的数字,但我希望有一种更简洁的方法来实现这一点。有谁知道如何让它工作,或者为什么它不起作用?
最佳答案
对不起。根据javadoc
the number of letters for number components are ignored except it's needed to separate two adjacent fields
...所以我认为没有直接的方法。
我会仅为 SSS
使用单独的格式并调用 substring(0, 2)
。
关于2 毫秒精度的 Java DateFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364383/