Java getHours (), getMinutes () và getSeconds ()


81

Như tôi biết getHours(), getMinutes()getSeconds()tất cả đều bị phản đối trong Java và họ được thay thế bằng Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND.

Trên thực tế, chúng sẽ trả về giờ, phút và giây cho thời điểm cụ thể đó. Tuy nhiên, tôi muốn truy xuất giờ và phút từ biến Ngày. Ví dụ,

nói rằng thời gian lấy từ cơ sở dữ liệu là

time = Thu Jan 01 09:12:18 CET 1970;

int hours = time.getHours();
int minutes = time.getMinutes();
int seconds = time.getSeconds();

Bằng cách truy xuất giờ, phút và giây, tôi nhận được

hours = 9
minutes = 12
seconds = 18

Vì vậy, làm cách nào để sử dụng Lịch cho chức năng này? Mặc dù getHours()đã không được chấp nhận nhưng nó vẫn hoạt động. Tôi vẫn muốn biết nếu có một giải pháp thay thế cho điều này.

Câu trả lời:


179

Thử đi:

Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);

Biên tập:

hours, minutes, seconds

ở trên sẽ là giờ, phút và giây sau khi chuyển đổi yourdatesang Múi giờ hệ thống!


1
Ngoài ra, nếu bạn cần đặt múi giờ, hãy thêm TimeZone tz = TimeZone.getTimeZone ("UTC"); // ... init lịch calendar.setTimeZone (tz); <code>
Swaraj

33

Java 8

    System.out.println(LocalDateTime.now().getHour());       // 7
    System.out.println(LocalDateTime.now().getMinute());     // 45
    System.out.println(LocalDateTime.now().getSecond());     // 32

Lịch

System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));  // 7 
System.out.println(Calendar.getInstance().get(Calendar.MINUTE));       // 45
System.out.println(Calendar.getInstance().get(Calendar.SECOND));       // 32

Giờ Joda

    System.out.println(new DateTime().getHourOfDay());      // 7
    System.out.println(new DateTime().getMinuteOfHour());   // 45
    System.out.println(new DateTime().getSecondOfMinute()); // 32

Được định dạng

Java 8

    // 07:48:55.056
    System.out.println(ZonedDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
    // 7:48:55
    System.out.println(LocalTime.now().getHour() + ":" + LocalTime.now().getMinute() + ":" + LocalTime.now().getSecond());

    // 07:48:55
    System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));

    // 074855
    System.out.println(new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime()));

    // 07:48:55 
    System.out.println(new Date().toString().substring(11, 20));

V tóm tắt hữu ích: đó có lẽ là những bộ hệ thống ngày / giờ phổ biến nhất hiện nay.
StephenBoesch

1
Nhưng nó hiển thị, giờ và phút bằng một chữ số. Có thể hiển thị hai chữ số
Phoenix

9

Đối với sự khác biệt về thời gian, hãy lưu ý rằng lịch bắt đầu lúc 01.01.1970, 01:00, không phải lúc 00:00. Nếu bạn đang sử dụng java.util.Date và java.text.SimpleDateFormat, bạn sẽ phải bù đắp trong 1 giờ:

long start = System.currentTimeMillis();
long end = start + (1*3600 + 23*60 + 45) * 1000 + 678; // 1 h 23 min 45.678 s
Date timeDiff = new Date(end - start - 3600000); // compensate for 1h in millis
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.SSS");
System.out.println("Duration: " + timeFormat.format(timeDiff));

Điều này sẽ in:

Thời lượng: 1: 23: 45.678


2
ồ. chỉ cách không thể can ngày thao tác được thực hiện trong java.
StephenBoesch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.