日期和時間

读书声起五更天發表於2024-09-12
  • 日期和時間繼承關係圖

  • 獲取時間戳(當前時間毫秒值)


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("出錯了!");
    }
}

相關文章