2009-05-25 21 views
101

Làm thế nào để bạn nhận được Giờ và Phút kể từ Date.getHoursDate.getMinutes không được chấp nhận? Các ví dụ mà tôi tìm thấy trên tìm kiếm của Google đã sử dụng các phương pháp không dùng nữa.Java: getMinutes và getHours

Trả lời

72

Từ Javadoc cho Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

Vì vậy, sử dụng

Calendar rightNow = Calendar.getInstance(); 
int hour = rightNow.get(Calendar.HOUR_OF_DAY); 

và tương đương cho getMinutes.

+2

Vì vậy, ... làm thế nào để làm việc này nếu tôi muốn để có được những giờ kể từ khi một ngày mà không tương ứng với bây giờ? – Michael

+0

Xem http://stackoverflow.com/questions/8150155/java-gethours-getminutes-and-getseconds – Mark

33

Thứ nhất, nhập khẩu java.util.Calendar

Calendar now = Calendar.getInstance(); 
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE)); 
6

Hãy thử Calender. Sử dụng getInstance để lấy Calender-Object. Sau đó, sử dụng setTime để đặt Ngày bắt buộc. Bây giờ bạn có thể sử dụng get (int field) với hằng số thích hợp như HOUR_OF_DAY hoặc lâu hơn để đọc các giá trị bạn cần.

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html

2

Tôi khuyên bạn nên xem quảng cáo thời gian joda. http://www.joda.org/joda-time/

Tôi sợ thêm một thư viện khác vào dự án dày của mình, nhưng nó dễ dàng và nhanh chóng và thông minh và tuyệt vời. Plus, nó chơi đẹp với mã hiện có, ở một mức độ nào đó.

145

Hãy thử sử dụng Joda Time thay vì các lớp java.util.Date chuẩn. Thư viện thời gian Joda có API tốt hơn nhiều để xử lý ngày tháng.

DateTime dt = new DateTime(); // current time 
int month = dt.getMonth();  // gets the current month 
int hours = dt.getHourOfDay(); // gets hour of day 

Xem điều này question vì ưu và nhược điểm khi sử dụng thư viện Thời gian Joda.

Thời gian Joda cũng có thể được đưa vào một số phiên bản Java trong tương lai dưới dạng thành phần chuẩn, xem JSR-310.


Nếu bạn phải sử dụng lớp java.util.Date và java.util.Calendar truyền thống, xem của javadoc của họ để được giúp đỡ (java.util.Calendarjava.util.Date).

Bạn có thể sử dụng các lớp truyền thống như thế này để tìm nạp các trường từ phiên bản Date cụ thể.

Date date = new Date(); // given date 
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance 
calendar.setTime(date); // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format 
calendar.get(Calendar.HOUR);  // gets hour in 12h format 
calendar.get(Calendar.MONTH);  // gets month number, NOTE this is zero based! 
1

Mặc dù tôi không khuyên bạn nên làm như vậy, tôi nghĩ rằng điều đáng nói là mặc dù nhiều phương thức trên java.util.Date đã không được chấp nhận nhưng chúng vẫn hoạt động. Trong các tình huống nhỏ, có thể sử dụng chúng. Ngoài ra, java.util.Calendar là khá chậm, vì vậy getMonth và getYear on Date có thể hữu ích nhanh hơn.

0

import java.util.* Bạn có thể gethour và minute bằng cách sử dụng lớp lịch và trình định dạng. Calendar cal = Calendar.getInstance()Formatter fmt=new Formatter() và thiết lập một định dạng cho giờ hiển thị và phút fmt.format("%tl:%M",cal,cal) và in System.out.println(fmt) show đầu ra như 10:12

28

java.thời gian

Khi tôi là người hâm mộ của Joda-Time, Java 8 giới thiệu gói java.time, đây là giải pháp tiêu chuẩn Java đáng giá nhất! Đọc bài viết này, Java SE 8 Date and Time, để có một lượng thông tin tốt về java.time ngoài giờ và phút.

Cụ thể, hãy xem lớp LocalDateTime.

giờ và phút:

LocalDateTime.now().getHour(); 
LocalDateTime.now().getMinute(); 
+0

Đây là câu trả lời hay nhất. Bạn có thể muốn cung cấp múi giờ rõ ràng để nhắc nhở người đọc và bản thân rằng đây là một hoạt động nhạy cảm múi giờ: 'LocalDateTime.now (ZoneId.of (" Asia/Manilla "))'. Đọc 'now()' chỉ một lần cho tính nhất quán (thời gian sẽ chuyển giữa hai cuộc gọi). Nếu ngày thực sự không liên quan, 'LocalTime' cũng hoạt động. –

1
int hr=Time.valueOf(LocalTime.now()).getHours(); 
int minutes=Time.valueOf(LocalTime.now()).getMinutes(); 

Những chức năng sẽ trở lại int giá trị trong giờ và phút.

+0

Trùng lặp. Cách tiếp cận này đã được đề cập trong [Trả lời bởi J.D.] (http://stackoverflow.com/a/29270120/642706). –

+0

Đó có phải là 'java.sql.Time' không? Chắc chắn không có lý do gì để đưa lớp học đã lỗi thời đó vào chơi khi bạn có 'java.time.LocalTime'. Bạn đang quá phức tạp. –

1
public static LocalTime time() { 
    LocalTime ldt = java.time.LocalTime.now(); 

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES); 
    System.out.println(ldt); 
    return ldt; 
} 

này làm việc cho tôi

+0

Thanh lịch. Bạn có thể muốn giải thích lý do tại sao nó hoạt động. –