Tôi nghĩ tôi có thể tạo ra một GregorianCalendar
bằng cách sử dụng hàm tạo phải mất năm, tháng và ngày, nhưng tôi không thể nhận được các trường đó từ một trường hợp của lớp java.sql.Date
một cách đáng tin cậy. Các phương pháp đó có được những giá trị từ java.sql.Date
đang bị phản đối, và mã sau đây cho thấy tại sao họ không thể được sử dụng:Làm thế nào để chuyển đổi một đối tượng java.sql.Date thành một GregorianCalendar?
import java.sql.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateTester {
public static void main(String[] args) {
Date date = Date.valueOf("2011-12-25");
System.out.println("Year: " + date.getYear());
System.out.println("Month: " + date.getMonth());
System.out.println("Day: " + date.getDate());
System.out.println(date);
Calendar cal = new GregorianCalendar(date.getYear(), date.getMonth(), date.getDate());
System.out.println(cal.getTime());
}
}
Dưới đây là đầu ra, cho thấy tháng và năm không trở lại một cách chính xác từ các phản getYear()
và getMonth()
phương pháp Date
:
Năm: 111
Tháng: 11
ngày: 25
2011-12-25
Thu 25 tháng 12 00:00:00 EST 111
Vì tôi không thể sử dụng các nhà xây dựng mà tôi đã cố gắng trên, và không có GregorianCalendar
xây dựng mà chỉ mất một Date
, làm thế nào tôi có thể chuyển đổi một đối tượng java.sql.Date
thành một GregorianCalendar
?
Từ nơi rs.getDate() đến từ đâu? –
xin lỗi - rs là tên biến tôi luôn cung cấp cho các đối tượng ResultSet - nó chỉ ở đó để biểu diễn một cá thể java.sql.Date mà bạn đã khởi tạo. – DaveH
Không thực sự là câu trả lời cụ thể nhất, nhưng +1 để theo dõi một số tiêu chuẩn đã làm cho mã này chính xác mà tôi đang tìm kiếm. – KjetilNordin