Maison >Java >javaDidacticiel >Comment puis-je convertir avec précision des objets date/heure Java entre les fuseaux horaires ?
Problème :
Conversion d'une date et d'une heure à partir de passer d'un fuseau horaire à un autre peut être difficile en Java. Le code fourni par l'utilisateur pour convertir l'heure actuelle de GMT en GMT 13 semble simple, mais la même approche échoue lors du réglage d'une heure spécifique. L'utilisateur se demande pourquoi le fuseau horaire de la machine locale est utilisé dans de tels cas.
Solution :
La confusion vient du fait que lors de la création d'un nouvel objet Date sans fuseau horaire explicite, l'heure est supposée être en UTC. Cependant, lors de la définition de l'heure sur un objet Calendrier en millisecondes (comme dans calendrier.setTime(new Date(1317816735000L))), l'hypothèse est que l'heure se trouve dans le fuseau horaire de la machine hôte.
Pour pour surmonter ce problème, vous pouvez définir explicitement le fuseau horaire de l'objet SimpleDateFormat avant de formater l'heure :
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(1317816735000L)); SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z"); // Set the time zone for the formatter sdf.setTimeZone(TimeZone.getTimeZone("GMT+13")); // Format the time with the specified time zone String newZealandTime = sdf.format(calendar.getTime());
Ce code renverra la date dans le fuseau horaire spécifié (GMT 13) sous forme de chaîne.
Étapes pour la conversion date/heure personnalisée :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!