LocalDate'i SQL Date Java'ya nasıl dönüştürebilirim?


101

LocalDate'i a'ya nasıl dönüştürebilirim java.sql.Date?

Girişim:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(new Date(date));

Bu başarısız oluyor (derlenmeyecek) ve tek bulabildiğim Joda time şeyler.

Java 8 kullanıyorum



2
@assylias Bağlantılı sorunun cevabı burada verilenlerden nasıl daha iyi? Diğer soru bunun bir kopyası olarak kapatılmalıdır, tersi değil.
— Madara'nın Hayaleti

1
@SecondRikudo yinelenen, LocalDate'ten Date'e VE tam tersi nasıl dönüştürüleceğini gösterir ve bu nedenle daha genel görünüyor.
— assylias

Yanıtlar:


177

Cevap gerçekten çok basit;

import java.sql.Date;
...
LocalDate locald = LocalDate.of(1967, 06, 22);
Date date = Date.valueOf(locald); // Magic happens here!
r.setDateOfBirth(date);

Tersine çevirmek isterseniz, bunu şu şekilde yaparsınız:

Date date = r.getDate();
LocalDate localD = date.toLocalDate();

rJOOQ'da kullandığınız kayıttır ve .getDate()kayıtlarınızdan tarihi çıkarmak için bir yöntemdir; date_of_birth adında bir tarih sütununuz olduğunu varsayalım, o zaman get yönteminiz çağrılmalıdır getDateOfBirth().


4
Bu, java.time'a göre "korkunç bir hack". * Yazar: stackoverflow.com/questions/33066904/…
— Dherik

15
Bu Soru ile ilgili java.util.Date NOT java.sql.Date ile ilgili sorulara atıfta bulunuyorsunuz .
— Gemtastic

0

Güncel tarihi istiyorsanız:

Date date = Date.valueOf(LocalDate.now());

Belirli bir tarih istiyorsanız:

Date date = Date.valueOf(LocalDate.of(1967, 06, 22));

1
Bu, yalnızca o anı istiyorsanız daha hızlıdır, belirli bir tarih istiyorsanız, birinin doğum tarihiyle uğraşırken olabileceği gibi, bu hiç işe yaramayacaktır.
— Gemtastic

Evet, örneğin bir nesne oluşturduğunuzda ve oluşturma tarihini sürdürmek istediğinizde geçerli tarihi eklemek içindir.
— RichardK

Asıl soru tamamen belirli bir tarih oluşturmakla ilgili olduğu için not edilmesi önemlidir. Bu, dışarıdaki tüm kopyalayıp yapıştırıcılar için bir not. Eğer Date date = Date.valueOf(LocalDate.of(1967, 06, 22));"daha hızlı" yapmak istiyorsanız , doğru yanıtı on line CAN .
— Gemtastic

-1

LocalDate'in toDate () yöntemini kullanmayı denediniz mi?

De olduğu gibi:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(date.toDate());

Genel olarak, sadece "başarısız olur" demek yerine, nasıl başarısız olacağını belirtmek iyi bir fikirdir .


Dürüst olmak gerekirse, google'da bulabilmeniz için soruyu yalnızca cevabımı göndermek için gönderdim. Kendi başıma anlamalıydım çünkü bu soruya veya cevaba Goodle'ın sahip olmadığı.
— Gemtastic

6
Pekala, şimdi iki cevabınız var, o kadar çok neşe. Kendi gönderilerinize cevap vermenin yanlış olduğunu düşünmüyorum.
— juhist

Umarım gelecekte benim yerimdeki birine yardımcı olur.
— Gemtastic

2
OP, “[…] tek bulabildiğim Joda zamanı şeyler. Java 8'den kurtuluyorum ”. Ancak cevabınız, Java 8 cevabı yerine sadece daha fazla Joda meselesi.
— Michael Piefel

1
LocalDate.toDate (), standart kitaplık sürümünde değil, yalnızca LocalDate'in Joda sürümünde bulunur.
— Rörd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.