-
日期和時間繼承關係圖
-
獲取時間戳(當前時間毫秒值)
util.Date
sql.Date
- java.sql.Date對應的是資料庫中日期型別的變數
SimpleDateFormat類
- format( ):日期 轉 字串
- parse( ): 字串 轉 日期
日期 轉 字串
字串 轉 日期
字串 轉sql.Date
- 需要先將 字串 轉換成 uitli.date
- 再將uitli.date 轉成 sql.date
Calendar日曆類
- Calendar是一個抽象類,使用Calendar.getInstance( )方法獲取物件
- 獲取月份時:一月是0,二月是1,以此類推,12月是11
- 獲取星期時:週日是1,週二是2 ,週六是7
java.time
- LocalDate類: 本地日期
- LocalTime類: 本地時間
- LocalDateTime類:本地日期和時間
LocalDate類、LocalTime類、LocalDateTime類
Instant類
- 時間線上的一個瞬時點。表示自1970年1月1日0時0分0秒(UTC)開始的秒數。
DateTimeFormatter類
- 格式化日期時間 和 解析日期時間
public static void main(String[] args) {
//獲取本地日期時間
LocalDateTime localDateTime = LocalDateTime.now();// 2024-09-12T14:40:40.161
//獲取DateTimeFormatter物件,並且自定義日期時間的格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化:日期 --> 字串
String timeStr = dateTimeFormatter.format(localDateTime);// 2024-09-12 02:43:34
//解析:字串 --> 日期
//TemporalAccessor parse = dateTimeFormatter.parse("2020-09-10 10:10:50");
timeStr = "2020-09-10 10:10:50";
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime02 = LocalDateTime.parse(timeStr, formatter2);
System.out.println(localDateTime02);// 2020-09-10T10:10:50
}
應用例項
- 三天打魚兩天曬網。判斷在指定日期是在打漁,還是在曬網。從1990-01-01開始。
/**
* 思路分析:
* 第一步:計算出1990-01-01到指定日期,一共多少天
* 第二步:總天數%5,餘數是1、2、3表示打魚。4、0曬網
*/
public static void main(String[] args) throws ParseException {
//開始時間轉換成毫秒值
String timeStr = "1990-01-01";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse(timeStr);
long startTime = date.getTime();
//結束時間轉換成毫秒值
String endTimeStr="2020-09-21";
Date endDate = simpleDateFormat.parse(endTimeStr);
//long endTime = new Date().getTime();
long endTime = endDate.getTime();
int swapTempTime=1000*60*60*24;
double allDays=(endTime-startTime)/swapTempTime;//獲取總天數
//判斷是否是一個小數。如果是小數 總天數+1
String str = allDays + "";
String[] split = str.split("\\.");
if (!"0".equals(split[1])) {
System.out.println(allDays+" 是一個小數");
//總天數+1
allDays += 1;
}
//總天數對5取模。1、2、3打漁,0、4曬網
int result=(int)allDays%5;
switch (result){
case 1:
case 2:
case 3:
System.out.println("正在打漁.....");
break;
case 0:
case 4:
System.out.println("今天休息。曬網");
break;
default:
System.out.println("出錯了!");
}
}