我很难让DateFormat库给我一个字符串,用2毫秒的位置来格式化日期,而不是通常的3。我意识到这更多的是在几秒的范围内,但是afaik不支持这一点。
这里有一些代码来说明我遇到的问题。我希望它能输出2毫秒,但它输出3毫秒。
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
我可以解析产生的字符串并删除我不想要的数字,但是我希望有一个更干净的方法来实现这一点。有没有人知道如何让它起作用,或者它为什么不起作用?
发布于 2012-02-20 16:26:16
发布于 2012-02-20 16:25:42
我还无法推断问题发生的原因,但是在用尤达替换日期格式之后,生成的时间字符串的正确秒数只有2秒。
发布于 2012-02-20 16:48:19
我将包括Joda时间并使用如下内容:
private static final String DATE_FORMAT_2MS_FMT = "yyyy-MM-dd'T'HH:mm:ss.SS'Z'";
private static final DateTimeFormatter DATE_FORMAT_2MS_DIGITS = DateTimeFormat
.forPattern(DATE_FORMAT_2MS_FMT).withZoneUTC();
public static String formatDate2MsDigits(Date date) {
return DATE_FORMAT_2MS_DIGITS.print(date.getTime());
}如果您不需要额外的依赖项,我认为从.format(...)中旋转结果字符串是唯一的方法。
https://stackoverflow.com/questions/9364383
复制相似问题