FastDateFormat HHmmssS 行为类似于 HHmmSSS

FastDateFormat HHmmssS behaviour like HHmmSSS

FastDateFormat.getInstance("HHmmssS").format(Calendar.getInstance()); returns 格式为 "HHmmssSSS" 的字符串,例如152712599 而不是预期的 1527125.

包和版本是"package org.apache.commons.lang3.time; @version $Id: FastDateFormat.java 1591488 2014-04-30 21:49:35Z"。

下面的解决方案将提供解决方法。

解决方法切断了 'HHmmssSSS' 的最后 2 位数字。

public static <Format> String HHMMssS(final Format calendar)
{
    final String HHmmssS = "HHmmssS";
    return FastDateFormat.getInstance(HHmmssS).format(calendar).substring(0, HHmmssS.length());
}

实际上你想要的是分秒,而不是毫秒,但你是对的,目前还没有支持(还?)。

请注意,使用单个 'S' 对其进行格式化可能只会给您实际的毫秒数,因此您需要使用格式字符串 "HHmmssSSS"。子字符串本身的长度应为 "HHmmssS".length().

所以你的实际 workaround/solution 应该是:

public static <Format> String HHMMssS(final Format calendar) {
  final String HHmmssS = "HHmmssSSS";
  return FastDateFormat.getInstance(HHmmssS).format(calendar).substring(0, "HHmmssS".length());
}

相关问题(关于解析): Deci and Centi Seconds parsing in java