2 毫秒精度的 Java DateFormat

Lit*_*ium 4 java time date-format

我在试图让 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);
}}
Run Code Online (Sandbox Code Playgroud)

输出:

1973-11-29T21:33:09.123Z

我可以解析结果字符串并删除我不想要的数字,但我希望有一种更简洁的方法来实现这一点。有谁知道如何让它发挥作用,或者为什么它不起作用?

hel*_*ios 5

对不起。根据javadoc

数字组件的字母数被忽略,除非需要分隔两个相邻的字段

...所以我认为没有直接的方法可以做到这一点。

我只会为SSS和调用使用单独的格式substring(0, 2)

  • 一次完成整个事情可能不那么复杂,但没有祖鲁时间指示器。然后只需修剪最后一个字符并添加 Z。 (2认同)