一、用於取代Date對象的DateTime對象
再也不用Date SimpleDateFormat Calendar之間倒騰來倒騰去了!日期創建-獲取-操作一步到位!
如果JDK版本更新到了8及以上,不妨嘗試新的時間日期API(參見JDK8新特性隨筆篇)
學習一個類的基本方式是了解其獲取方式(構造器),與常用方法(API)
以下是引用自官網示例的Demo:
public static void main(String[] args) { DateTime dateTime = new DateTime("2017-9-14 21:55:18", "yyyy-MM-dd HH:mm:ss"); // 獲取日期成員(年、季度、月、日)
int year = dateTime.year();// 年
System.out.println("year = " + year); int season = dateTime.season();// 季度
System.out.println("season = " + season); int month = dateTime.month();// 月份
System.out.println("month = " + month); int dayOfWeek = dateTime.dayOfWeek();// 周幾
System.out.println("dayOfWeek = " + dayOfWeek); int dayOfMonth = dateTime.dayOfMonth();// 此月第N天
System.out.println("dayOfMonth = " + dayOfMonth); // 調整日期時間
DateTime dateTime1 = dateTime.offset(DateField.DAY_OF_MONTH, -1); System.out.println(dateTime1.toString()); }
結果:
二、強大的日期時間工具類——DateUtil
1.解析——字符串解析為日期
public static void main(String[] args) { // 日期字符串請補全為2位數字
String str1 = "2017-09-14"; String str2 = "2017-09-14 21:03:01"; // 自動感應格式
Date date1 = DateUtil.parse(str1); Date date2 = DateUtil.parse(str2); System.out.println("date1:"+date1); System.out.println("date2:"+date2); // 手動設置格式(其中DateTime是可以完全替代Date的一個子類)
DateTime dateTime1 = DateUtil.parse(str1, "yyyy-MM-dd"); DateTime dateTime2 = DateUtil.parse(str2, "yyyy-MM-dd HH:mm:ss"); System.out.println(dateTime1); System.out.println(dateTime2); }
2.格式化——將日期格式化為字符串
public static void main(String[] args) { // 日期字符串請補全為2位數字
String str1 = "2017-09-14"; // 自動感應格式
Date date1 = DateUtil.parse(str1); // 格式化為指定格式字符串
String s1 = DateUtil.format(date1, "yyyy年MM月dd日"); System.out.println("s1 = " + s1); // 常用格式格式化
String s2 = DateUtil.formatDate(date1); System.out.println("s2 = " + s2); }
結果:
3.獲取日期成員(對比DateTime的操作)
public static void main(String[] args) { // 日期字符串請補全為2位數字
String str1 = "2017-09-14"; // 自動感應格式
Date date1 = DateUtil.parse(str1); // 獲取指定日期成員(通過DateTime同樣可以完成)
int year = DateUtil.year(date1); System.out.println("year = " + year); int dayOfMonth = DateUtil.dayOfMonth(date1); System.out.println("dayOfMonth = " + dayOfMonth); }
結果:
4.日期時間偏移
public static void main(String[] args) { // 日期字符串請補全為2位數字
String str1 = "2017-09-14"; // 自動感應格式
Date date1 = DateUtil.parse(str1); // 日期時間偏移
DateTime dateTime = DateUtil.offset(date1, DateField.HOUR_OF_DAY, 5); System.out.println("dateTime = " + dateTime); DateTime dateTime1 = DateUtil.offsetDay(date1, 1); System.out.println("dateTime1 = " + dateTime1); }
結果:
針對當前時間的簡化偏移操作:
public static void main(String[] args) { // 當前時間的簡化偏移方法
String now = DateUtil.now(); System.out.println("now = " + now); // 昨天
DateTime yesterday = DateUtil.yesterday(); System.out.println("yesterday = " + yesterday); // 明天
DateTime tomorrow = DateUtil.tomorrow(); System.out.println("tomorrow = " + tomorrow); // 上周
DateTime lastWeek = DateUtil.lastWeek(); System.out.println("lastWeek = " + lastWeek); // 下月
DateTime nextMonth = DateUtil.nextMonth(); System.out.println("nextMonth = " + nextMonth); }
結果:
5.其它:
public static void main(String[] args) { // 距今年齡
int age = DateUtil.ageOfNow("2008-12-22"); System.out.println("age = " + age); // 是否閏年
boolean leapYear = DateUtil.isLeapYear(2017); System.out.println("leapYear = " + leapYear); }
結果: