時(shí)間
前文講述了時(shí)間點(diǎn) Instant類。JDK8時(shí)間模型——Instant
現(xiàn)在分析 時(shí)間表 LocalDateTime 和 日期格式 DateTimeFormatter杏瞻。
LocalDateTime 類似 之前的Calendar所刀;DateTimeFormatter 和 之前的 SimpleDateFormatter 相似。
LocalDateTime
直接上代碼:
// 當(dāng)前日期
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime); // 2017-06-26T17:46:11.366
// 改變 年月日
int year=2017, month=6, dayOfMonth=25;
localDateTime = localDateTime.withYear(year);
localDateTime = localDateTime.withMonth(month);
localDateTime = localDateTime.withDayOfMonth(dayOfMonth);
System.out.println(localDateTime); // 2017-06-25T17:46:11.366
// 裁剪(用的有限制捞挥,日以上單位均無(wú)效)
localDateTime = localDateTime.truncatedTo(ChronoUnit.DAYS);
System.out.println(localDateTime); // 2017-06-25T00:00
localDateTime.truncatedTo(ChronoUnit.MONTHS); // error : UnsupportedTemporalTypeException: Unit is too large to be used for truncation
// String => LocalDateTime
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
localDateTime = LocalDateTime.parse("2017-06-01 01:02:03", dtf);
System.out.println(localDateTime); //2017-06-01T01:02:03
DateTimeFormatter
已提供的若干靜態(tài)formatter:
// 默認(rèn)提供 System.out.println(ISO_LOCAL_DATE.format(LocalDateTime.now())); // 2017-06-26 System.out.println(ISO_DATE.format(LocalDateTime.now())); // 2017-06-26 System.out.println(BASIC_ISO_DATE.format(LocalDateTime.now())); // 20170626
如果不夠用浮创,當(dāng)然可以自定義DateTimeFormatter :
// 自定義 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); System.out.println(dtf.format(LocalDateTime.now())); // 2017-06-26 17:37:57
改了原來(lái)的DateUtils嗎?
并沒(méi)有改原來(lái)的類砌函,同時(shí)舊代碼的調(diào)用保留斩披。
替換需要更多的TeseCase,原來(lái)的類繼續(xù)使用讹俊,新功能建議使用新DateUtils垦沉。
收獲
新的Date API 熟悉并使用了它們寫了新的DateUtils。