Khám Phá Lớp Công Cụ DateUtil Trong Hutool

Khám Phá Lớp Công Cụ DateUtil Trong Hutool

1.0、DateUtil (Công Cụ Xử Lý Ngày Giờ)

0) Thêm Thư Viện

<dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.3.9</version>
    </dependency>

1) Phương thức date() - Lấy ngày giờ hiện tại (định dạng: yyyy-MM-dd HH:mm:ss)

Date thoiGianHienTai = DateUtil.date(); // 2020-09-14 10:27:06
// Chuyển từ Calendar sang Date       
Date thoiGianCalendar = DateUtil.date(Calendar.getInstance()); // 2020-09-14 10:27:07
// Chuyển từ milliseconds sang Date
Date thoiGianMili = DateUtil.date(System.currentTimeMillis()); // 2020-09-14 10:27:07

Cả ba cách trên đều cho kết quả ngày giờ được định dạng

2) Phương thức now() - Lấy chuỗi ngày giờ hiện tại

// Chuỗi thời gian hiện tại, định dạng: yyyy-MM-dd HH:mm:ss
String ngayGioHienTai = DateUtil.now(); // 2020-09-14 10:22:46
// Chuỗi ngày hiện tại, định dạng: yyyy-MM-dd
String ngayHienTai = DateUtil.today(); // 2020-09-14

3) Phương thức parse() - Chuyển chuỗi ngày sang Date

// Chuyển chuỗi ngày thành đối tượng Date<br></br>String chuoiNgay = "2017-03-01"; 
Date ngay = DateUtil.parse(chuoiNgay);
// Chuyển chuỗi ngày có giờ thành đối tượng Date
String chuoiNgayGio = "2017-03-01 23:20:23";<br></br>Date ngayGio = DateUtil.parse(chuoiNgayGio); // 2017-03-01 23:20:23
// Chuyển chuỗi ngày thành Date với định dạng cụ thể<br></br>Date ngayCuThe = DateUtil.parse(chuoiNgayGio, "yyyy-MM-dd"); // 2017-03-01 00:00:00

4) Phương thức format() - Định dạng Date thành chuỗi

// Lấy ngày giờ hiện tại<br></br>Date ngayHienTai = DateUtil.date(); 
// Định dạng thành chuỗi theo mẫu
String chuoiDinhDang = DateUtil.format(ngayHienTai, "yyyy/MM/dd");// Kết quả: 2020/07/16
// Định dạng thành chuỗi ngày
String chuoiNgay = DateUtil.formatDate(ngayHienTai);// Kết quả: 2020-07-16
// Định dạng thành chuỗi ngày giờ
String chuoiNgayGio = DateUtil.formatDateTime(ngayHienTai);// Kết quả: 2020-07-16 20:22:54
// Định dạng thành chuỗi giờ
String chuoiGio = DateUtil.formatTime(ngayHienTai);// Kết quả: 20:22:54

5) Phương thức year() và month() - Lấy năm và tháng từ Date

Date ngayHienTai = DateUtil.date();
// Lấy phần năm
int nam = DateUtil.year(ngayHienTai);
// Lấy tháng, bắt đầu từ 0
int thang = DateUtil.month(ngayHienTai)+1;

6) Phương thức beginOfDay() và endOfMonth() - Lấy thời điểm bắt đầu/kết thúc ngày/tháng

Date ngayHienTai = DateUtil.date();
// Bắt đầu ngày, kết quả: 2017-03-01 00:00:00
Date batDauNgay = DateUtil.beginOfDay(ngayHienTai);
// Kết thúc ngày, kết quả: 2017-03-01 23:59:59
Date ketThucNgay = DateUtil.endOfDay(ngayHienTai);
// Bắt đầu tháng, kết quả: 2017-03-01 00:00:00
Date batDauThang = DateUtil.beginOfMonth(ngayHienTai);
// Kết thúc tháng, kết quả: 2017-03-31 23:59:59
Date ketThucThang = DateUtil.endOfMonth(ngayHienTai);

Ví dụ sử dụng trong dự án: Giao diện gửi một đối tượng {date:['2020-10-07','2020-11-07']} (đối tượng chứa mảng với các phần tử là ngày bắt đầu và kết thúc) về backend, backend nhận chuỗi String('2020-10-07','2020-11-07'), tách chuỗi bằng dấu phẩy, sau đó sử dụng beginOfDay và endOfDay để lấy thời điểm bắt đầu của ngày đầu và thời điểm kết thúc của ngày cuối.

public KetQua layDanhSach(String chuoiNgay) {
        Date ngayBatDau = null;
        Date ngayKetThuc = null;
        String mangNgay[] = chuoiNgay.split(",");// Lấy thời điểm bắt đầu ngày, 00:00:00
        ngayBatDau = DateUtil.beginOfDay(DateUtil.parse(mangNgay[0]));
        // Lấy thời điểm kết thúc ngày, 23:59:59
        ngayKetThuc = DateUtil.endOfDay(DateUtil.parse(mangNgay[1]));
       。。。。。
}

7) Phương thức offsetHour() và offsetDay() - Tính toán thời gian lệch (lùi hoặc tiến)

Date ngayHienTai = DateUtil.date();
// Lấy thời gian 3 giờ trước, kết quả: 2017-03-01 19:33:23
Date ngayTru3Gio = DateUtil.offsetHour(ngayHienTai, -3);<br></br>// Lấy thời gian 3 giờ sau<br></br>Date sau3Gio = DateUtil.offsetHour(ngayHienTai,3);
// Lấy thời gian 3 ngày sau, kết quả: 2017-03-04 22:33:23
Date sau3Ngay = DateUtil.offsetDay(ngayHienTai, 3);
// Lấy thời gian 3 ngày trước, kết quả: 2017-03-04 22:33:23
Date tru3Ngay = DateUtil.offsetDay(ngayHienTai, -3);

// Hôm qua
Date homQua = DateUtil.yesterday();
// Ngày mai
Date ngayMai = DateUtil.tomorrow();
// Tuần trước
Date tuanTruoc = DateUtil.lastWeek();
// Tuần sau
Date tuanSau = DateUtil.nextWeek();
// Tháng trước
Date thangTruoc = DateUtil.lastMonth();
// Tháng sau
Date thangSau = DateUtil.nextMonth();

8) Phương thức between() - Tính khoảng cách ngày giờ

String ngayStr1 = "2017-03-01 22:33:23";
Date ngay1 = DateUtil.parse(ngayStr1);
String ngayStr2 = "2017-05-01 23:33:23";
Date ngay2 = DateUtil.parse(ngayStr2);
String ngayStr3 = "2017-03-02 20:23:35";
Date ngay3 = DateUtil.parse(ngayStr3);

// Khoảng cách giữa hai thời điểm (đơn vị: ngày)
 long khoangCachNgay = DateUtil.between(ngay1, ngay2, DateUnit.DAY);
// Khoảng cách giữa hai thời điểm (đơn vị: giờ)
 long khoangCachGio = DateUtil.between(ngay1, ngay3, DateUnit.HOUR);

// Định dạng khoảng thời gian, chính xác đến phút
String khoangThoiGian = DateUtil.formatBetween(khoangCachNgay, BetweenFormater.Level.MINUTE);

9) Các tính năng khác

 // Tính tuổi
int tuoi = DateUtil.ageOfNow("1990-01-30");

// Kiểm tra năm nhuận
boolean namNhuan = DateUtil.isLeapYear(2017);

Thẻ: hutool DateUtil Java Xử lý ngày giờ Thư viện Java

Đăng vào ngày 14 tháng 7 lúc 23:45