1、Date
1.1 Date實體化
Date date1 = new Date();
System.out.println(date1); //Thu Jun 16 19:18:56 CST 2022
1.2 獲取日期毫秒數
getTime()
System.out.println(date1.getTime()); //1655378336808
System.out.println(System.currentTimeMillis()); //通過系統獲取時間1655378336867
1.3 日期格式化(從Date到String)
format(Date date)
SimpleDateFormat sdf1 = new SimpleDateFormat();
sdf1.applyPattern("yyyy-MM-dd HH:mm:ss"); //日期格式
System.out.println(sdf1.format(date1)); //2022-06-16 19:18:56
//簡寫
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf3.format(new Date()));
原始碼
public final String format(Date date)
{
return format(date, new StringBuffer(),
DontCareFieldPosition.INSTANCE).toString();
}
字串格式化的日期格式串的含義
//yyyy:四位的年 yy:兩位的年
//MM 月份(0-11,代表1-12月)
//DD 年中的天數
//dd 月份中的天數(當前的天數,第幾天)
//HH 24小時制(0-23)
//hh 12小時制(1-12)
//mm 分鐘
//ss 秒數
//SSS 毫秒
1.4 日期決議(從String到Date)
parse(String source)
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = "2021-06-16 11:45:45";
Date date2 = null;
try {
//轉換日期時,需要進行例外處理,處理ParseException,因為日期字串可能不匹配
date2 = sdf3.parse(dateStr);
System.out.println(date2); //Wed Jun 16 11:45:45 CST 2021
} catch (ParseException e) {
e.printStackTrace();
}
原始碼
public Date parse(String source) throws ParseException
{
ParsePosition pos = new ParsePosition(0);
Date result = parse(source, pos);
if (pos.index == 0)
throw new ParseException("Unparseable date: \"" + source + "\"" ,
pos.errorIndex);
return result;
}
1.5 日期比較
//日期比較,日期是物件,不可以直接使用比較運算子進行比較
方式1:直接比較兩個日期對應的毫秒數,誰大,誰的日期就大(晚)
String beginTime = new String("2020-08-09 13:32:20");
String endTime = new String("2099-10-08 11:21:32");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date beginDate = df.parse(beginTime);
Date endDate = df.parse(endTime);
//因為時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數,所以毫秒數越大時間越晚
if(beginDate.getTime() < endDate.getTime()){ //beginDate is before endDate
System.out.println("beginDate is before endDate");
}else{
System.out.println("beginDate is after endDate");
}
方式2:借助Date的自帶比較方法:before和after
if (beginDate.before(endDate)) {
System.out.println("beginDate is before endDate");//beginDate is before endDate
}
if (endDate.after(beginDate)) {
System.out.println("endDate is after beginDate");//endDate is after beginDate
}
1.6 時間增加
增加毫秒數
//在當前基礎上,增加1小時30分鐘
Date date3 = new Date();
System.out.println("當前時間:"+sdf3.format(date3));//2022-06-16 19:50:20
//增加1小時30分鐘,需要獲取當前毫秒數,在加上1小時30分鐘毫秒數
long time3 = date3.getTime();
long addTime = (60+30)*60*1000;
//根據毫秒數,轉換為日期物件
Date date4 = new Date(time3 + addTime);
System.out.println("新時間:"+sdf3.format(date4));//2022-06-16 21:20:20
2、Calendar
2.1創建日歷類物件
創建日歷類物件,不是new出來的,而是通過日歷類自帶的靜態方法getInstance,獲取;
Calendar calendar = Calendar.getInstance();
原始碼
public static Calendar getInstance()
{
return createCalendar(TimeZone.getDefault(),
Locale.getDefault(Locale.Category.FORMAT));
}
2.2獲取相關資訊
//獲取年份
int year = calendar.get(Calendar.YEAR);
System.out.println("當前年份:"+year);//2022
//獲取月份,0-11代表1-12月,真實月份要+1
int month = calendar.get(Calendar.MONTH);
System.out.println("當前第幾個月份:"+month);//5 代表6月份
//獲取天數,是一年中哪一天
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("當前天是一年中的第:"+dayOfYear); //167
2.3 通過日歷類對日期進行操作
//通過日歷類,獲取當前日期物件
Date date = calendar.getTime();
System.out.println("當前日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); //2022-06-16 20:03:10
//在當前時間的基礎上,靈活的添加時間,增加1小時30分鐘
calendar.add(Calendar.HOUR,1);
calendar.add(Calendar.MINUTE,30);
System.out.println("新日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); //2022-06-16 21:33:10
//通過日歷類,創建時間物件
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.YEAR,2021);
calendar2.set(Calendar.MONTH,6-1);
calendar2.set(Calendar.DAY_OF_MONTH,16);
System.out.println("新日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); //2022-06-16 21:33:10
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492206.html
標籤:Java
