Fusion de java.util.date avec java.sql.Le temps

J'ai une vaste DATE de conversion en TEMPS de classe, mais je suis tombé sur un scénario que je ne peut pas résoudre:

J'ai un java.util.date: Mar Mai 10 00:00:00 BST 2011
J'ai un java.sql.durée: 03:58:44

J'ai besoin de créer un java.util.date: Mardi 10 Mai à 03:58:44 BST 2011

La seule approche que j'ai trouvé est:

public static Date getDate(Date date, Time time) {
    Calendar calendar=Calendar.getInstance();
    calendar.set(date.getYear(), date.getMonth(), date.getDay(), time.getHours(), time.getMinutes(), time.getSeconds());
    return calendar.getTime();
}

Totalement obsolète code, et ne fonctionne pas:
java.lang.IllegalArgumentException à java.sql.Temps.getYear(Source Inconnue)

Des idées?

Si vous avez obtenu cette exception que le code, alors vous avez réellement passé dans un Time exemple sur le premier paramètre!
joda-time est toujours la meilleure approche pour travailler avec des dates en java joda-time.sourceforge.net
<rant>Sur une partie liée remarque: lors de la java.util.Date API est très mal construit et devrait depuis longtemps avoir été remplacer par un sain d'esprit (comme Joda Time), la java.sql.Date et java.sql.Time "extension" est encore pire: Ils ne pas suivre le principe de substitution de Liskov et pour empirer les choses java.sql.Date même a le même nom que sa classe de base.</rant>
Je suis d'accord, j'ai dû faire une optimisation de la conversion de la classe qui a tout ce dont j'ai besoin et qui fait SENS pour moi... java.util.date est une douleur... mais pour l'instant j'ai juste besoin d'une solution simple à ce scénario.

OriginalL'auteur marcolopes | 2011-05-10