无法从 joda dateTime 对象中删除毫秒
Unable to remove millis from joda dateTime object
我尝试了不同的 ISODateTimeFormats
(dateHourMinuteSecond()
, dateTimeNoMillis()
) 和我自己的格式 "yyyy-MM-dd'T'HH:mm:ss"
,为了让时间戳被解析为没有毫秒的日期时间对象,它失败。
对于每种格式,我都尝试相应地修改字符串:
String value = "2011-01-24T09:45:00.000";
DateTimeFormatter formatter = ISODateTimeFormat.dateHourMinuteSecond();
value = value.substring(0, value.lastIndexOf('.'));
System.out.println("Formatted dateTime: "+formatter.parseDateTime(value));
输出:
Formatted dateTime: 2011-01-24T09:45:00.000Z
我在 jodatime 2.2.
中进行了测试
formatter.parseDateTime(value)
returns 一个 DateTime
对象。当您将此对象传递给 System.out.println
时,它会调用此 DateTime
对象的 toString()
方法。看看源代码,我发现它调用 ISODateTimeFormat
:
// (from jodatime source)
/**
* Output the date time in ISO8601 format (yyyy-MM-ddTHH:mm:ss.SSSZZ).
*
* @return ISO8601 time formatted string.
*/
@ToString
public String toString() {
return ISODateTimeFormat.dateTime().print(this);
}
要得到你想要的输出(没有毫秒),你需要格式化DateTime
对象:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
value = value.substring(0, value.lastIndexOf('.'));
DateTime datetime = formatter.parseDateTime(value);
// *** create the formatter with the "no-millis" format ***
DateTimeFormatter formatterNoMillis = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
System.out.println("Formatted dateTime: " + datetime.toString(formatterNoMillis));
输出将是:
Formatted dateTime: 2011-01-24T09:45:00
你也可以这样做:
System.out.println("Formatted dateTime: " + formatterNoMillis.print(datetime));
//the output will be the same
我尝试了不同的 ISODateTimeFormats
(dateHourMinuteSecond()
, dateTimeNoMillis()
) 和我自己的格式 "yyyy-MM-dd'T'HH:mm:ss"
,为了让时间戳被解析为没有毫秒的日期时间对象,它失败。
对于每种格式,我都尝试相应地修改字符串:
String value = "2011-01-24T09:45:00.000";
DateTimeFormatter formatter = ISODateTimeFormat.dateHourMinuteSecond();
value = value.substring(0, value.lastIndexOf('.'));
System.out.println("Formatted dateTime: "+formatter.parseDateTime(value));
输出:
Formatted dateTime: 2011-01-24T09:45:00.000Z
我在 jodatime 2.2.
中进行了测试formatter.parseDateTime(value)
returns 一个 DateTime
对象。当您将此对象传递给 System.out.println
时,它会调用此 DateTime
对象的 toString()
方法。看看源代码,我发现它调用 ISODateTimeFormat
:
// (from jodatime source)
/**
* Output the date time in ISO8601 format (yyyy-MM-ddTHH:mm:ss.SSSZZ).
*
* @return ISO8601 time formatted string.
*/
@ToString
public String toString() {
return ISODateTimeFormat.dateTime().print(this);
}
要得到你想要的输出(没有毫秒),你需要格式化DateTime
对象:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
value = value.substring(0, value.lastIndexOf('.'));
DateTime datetime = formatter.parseDateTime(value);
// *** create the formatter with the "no-millis" format ***
DateTimeFormatter formatterNoMillis = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
System.out.println("Formatted dateTime: " + datetime.toString(formatterNoMillis));
输出将是:
Formatted dateTime: 2011-01-24T09:45:00
你也可以这样做:
System.out.println("Formatted dateTime: " + formatterNoMillis.print(datetime));
//the output will be the same