3 回答
TA貢獻1826條經(jīng)驗 獲得超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條經(jīng)驗 獲得超4個贊
SimpleDateFormat來自使用 Dates 的古老而過時的方式。它也不是線程安全的,并且還有很多其他問題。換句話說,不要使用它。您需要使用DateTimeFormatter請閱讀 javadoc(提供的鏈接)。它詳細解釋了如何使用它。但是,您的問題的原因是在您的格式掩碼中,您缺少占位符幾秒鐘,因此當您的字符串有幾秒鐘時,它不符合您的格式。將格式更改為dd-MMM-YY HH:mm:ss aa強調“ss” - 缺少秒占位符,它將起作用
TA貢獻1876條經(jīng)驗 獲得超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,希望這是您想要的。
添加回答
舉報
