Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách lấy thời gian tính bằng mili-giây cho ngày và giờ cho trước trong Java

Lớp java.text.SimpleDateFormat được dùng để định dạng và phân tích chuỗi thành ngày và ngược lại.

  • Một trong các constructor của lớp này chấp nhận một giá trị String đại diện cho định dạng ngày mong muốn và tạo đối tượng SimpleDateFormat.
  • Để phân tích/chuyển đổi một chuỗi thành đối tượng Date, khởi tạo lớp này bằng cách truyền chuỗi định dạng mong muốn.
  • Phân tích chuỗi ngày bằng phương thức parse().
  • Bạn có thể lấy thời gian epoch (số mili-giây từ 1/1/1970) bằng phương thức getTime().

Ví dụ: Sử dụng SimpleDateFormat

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Sample {
    public static void main(String args[]) throws ParseException {
        // Khởi tạo lớp SimpleDateFormat
        SimpleDateFormat dateformatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");

        // Phân tích chuỗi cho trước thành đối tượng Date
        String str = "25-08-2009 11:20:45";
        Date date = dateformatter.parse(str);
        long msec = date.getTime();
        System.out.println("Epoch của ngày cho trước: " + msec);
    }
}

Kết quả

Epoch của ngày cho trước: 1251179445000

Ví dụ: Sử dụng lớp Calendar

Bạn có thể đặt giá trị ngày và giờ cho đối tượng Calendar bằng phương thức set(). Phương thức getTimeInMillis() của lớp này trả về epoch time của giá trị ngày.

import java.util.Calendar;

public class Sample {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();
        cal.set(2014, 9, 11, 10, 25, 30);
        long msec = cal.getTimeInMillis();
        System.out.print(msec);
    }
}

Kết quả

1413003330758

Ví dụ: Sử dụng ZonedDateTime (Java 8+)

Bạn có thể đặt giá trị ngày và giờ cho đối tượng ZonedDateTime bằng phương thức of(). Phương thức toEpochMilli() của lớp Instant trả về epoch time.

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Sample {
    public static void main(String args[]) {
        // Tạo đối tượng ZonedDateTime
        ZoneId id = ZoneId.of("Asia/Kolkata");
        ZonedDateTime obj = ZonedDateTime.of(2014, 9, 11, 10, 25, 30, 22, id);
        Instant instant = obj.toInstant();
        long msec = instant.toEpochMilli();
        System.out.println("Mili-giây: " + msec);
    }
}

Kết quả

Mili-giây: 1410411330000