2009-12-14 13 views
2

Je suis nouveau à joda-time et je n'ai pas trouvé d'exemples pour faire des choses simples.Créer jodatime LocalDate à partir de java.sql.Time

Je veux faire un objet où enregistrer une valeur de temps de lecture d'une table dans une base de données (un java.sql.Time - par exemple "18:30:00") Je ne me soucie pas de fuseau horaire, donc je pense que je dois LocalDate. Mais le problème est que je ne pouvais pas créer un objet LocalDate basé sur cet objet Time. J'ai essayé sans succès LocalDate.fromDateFields(), DateTimeParser.parseInto(), DateTimeParser.parseDateTime().

EDIT: J'aurais dû utiliser LocalTime. Ces travaux:

java.sql.Time time = Time.valueOf("18:30:00"); 
LocalTime lt1 = LocalTime.fromDateFields(time); 
LocalTime lt2 = new LocalTime(time); 
+0

'org.joda.time.LocalDate' représente une date,' java.sql.Time' représente une heure. Quelle conversion significative vous attendriez-vous de cela? – skaffman

+0

J'ai vu que 'YearMonthDay' et' TimeOfDay' étaient des classes où vous n'avez pas besoin de tous les champs datetime (partial). Mais quand je voulais les utiliser, il y avait des dépréciations et il a dit utiliser 'LocalDate' et' LocalTime'. Maintenant, je vois que j'aurais dû utiliser 'LocalTime'. Mais ça ne marche pas avec ça non plus. –

+0

Comment irait-on l'autre autour. Je suis en train de convertir fom LocalTime en sql time, mais j'ai remarqué que les fonctions getMillis() * de LocalTime retournent ints. Je veux annuler d'avoir à faire la navette à travers DateTime. –

Répondre

4

Selon the documentation, vous devriez être en mesure de construire un LocalDate directement en la faisant passer un java.util.Date comme le seul argument du constructeur. Depuis un java.sql.Time étend java.util.Date, vous devriez être en mesure de

final LocalDate ld = new LocalDate(mySqlTime); 

Cela fonctionne pour moi:

System.out.println(new LocalDate(Time.valueOf("18:30:00"))); 

D'autre part, ce n'est pas une chose utile à faire , puisque vous aurez toujours le 1er janvier 1970. Mais j'imagine que vous savez ce que vous faites.

+0

J'ai déjà essayé 'LocalDate ld = nouvelle LocalDate (Time.valueOf (" 18:30:00 "));' et il donne 'java.lang.UnsupportedOperationException' –

+0

Cela fonctionne pour moi. –

+0

J'aurais dû utiliser 'LocalTime'. J'ai édité ma question. –