Date date = //getting Date object of (record inserted datetime) using Hibernate query .
DateTime currentDateTime = new DateTime(System.currentTimeMillis(), DateTimeZone.UTC);
System.out.println("Current Date Time " + currentDateTime);
DateTime utcDateTime = new DateTime(date, DateTimeZone.UTC);
System.out.println("UTC Date Time :: " + utcDateTime);
Period per = new Period(currentDateTime.toLocalDateTime(), utcDateTime.toLocalDateTime());
System.out.println("Period time in sec ::" + (float) per.toStandardSeconds().getSeconds());
System.out.println("Period time in minutes::" + (float) per.toStandardSeconds().getSeconds()/60);
System.out.println("Period time in hours::" + (float) per.toStandardSeconds().getSeconds()/(60 * 60));
Je stocke toutes les données avec le fuseau horaire UTC dans la base de données MySQL. Maintenant, je veux obtenir le décalage horaire entre l'heure actuelle et l'enregistrement inséré. Mon fuseau horaire local est GMT + 5: 30. Je me trompe d'heures (+5: 30 heures avec différence réelle) en différence de temps. Je ne sais pas où je fais erreur? J'utilise ce code pour stocker la date dans DB.
EDIT:
Différence de temps erronée en minutes/heure avec l'API joda et le fuseau horaire UTC
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(format);
DateTime dateTime = new DateTime(DateTimeZone.UTC);
return dateTime.toString(dateTimeFormatter);
Il n'est pas du tout clair que le problème est avec Joda Time ici. Quelle est la valeur de 'date'? (Et est-ce un 'java.sql.Date' ou un' java.util.Date'?) Quelle valeur a été enregistrée dans la base de données? Cela n'aide pas que vous ne nous ayez montré aucune des valeurs impliquées ... et vous ne comprenez pas pourquoi vous convertissez en 'LocalDateTime'. –
c'est java.util.Date. Voir la question mise à jour. –
Je ne sais pas comment vous êtes passé du commentaire ci-dessus à votre édition ... –