3 回答
TA贡献1826条经验 获得超6个赞
在java8中,你就不需要SimpleDateFormat了,很麻烦。
我建议使用ISO_OFFSET_DATE_TIME:
ISO 日期时间格式化程序,用于格式化或解析带有偏移量的日期时间,例如“2011-12-03T10:15:30+01:00”。
例子:
import java.util.*;
import java.time.*;
import java.time.format.*;
public class HelloWorld{
public static void main(String []args){
OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");
DateTimeFormatter f = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
System.out.print(f.format(odtB)); // 2019-02-02T13:55:00Z
}
}
TA贡献1816条经验 获得超4个赞
SimpleDateFormat
来自使用 Dates 的古老而过时的方式。它也不是线程安全的,并且还有很多其他问题。换句话说,不要使用它。您需要使用DateTimeFormatter请阅读 javadoc(提供的链接)。它详细解释了如何使用它。但是,您的问题的原因是在您的格式掩码中,您缺少占位符几秒钟,因此当您的字符串有几秒钟时,它不符合您的格式。将格式更改为dd-MMM-YY HH:mm:ss aa
强调“ss” - 缺少秒占位符,它将起作用
TA贡献1876条经验 获得超6个赞
如果您使用java.time.LocalDateTime(从 Java 8 开始就应该使用),您可以使用不同DateTimeFormatter的 s,您可以配置(给它们一个模式)以不修剪尾随零。请参阅以下示例,使用String稍微调整模式的日期:
LocalDateTime ldt = LocalDateTime.parse("2019-02-02T13:55:00Z", DateTimeFormatter.ISO_DATE_TIME);
System.out.println(ldt.format(DateTimeFormatter.ofPattern("dd-MMM\''YY HH:mm:ss")));
这将打印02-Feb'19 13:55:00,希望这是您想要的。
添加回答
举报