So wissen Sie, dass Ihre Eingabe "lokales Datum" ist in der PMST-Zeitzone.
Aber Sie sollten in der Lage sein zu beachten, dass das oben genannte nicht die Zeitzone Informationen enthält, die Sie kennen. Sie müssen diese Informationen also zum String hinzufügen.
Aber was wir jetzt haben, ist nur ein String
, so erste haben wir zum Zeitpunkt der Zeitformat entscheiden, die wir verwenden werden, und es hat Time-Zone bewusst,
DateTimeFormatter dateTimeWithZoneFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm Z");
Hier zu sein, stellt Z
die Zeitzonen-Offset. Wir wissen, dass PMST
ist UTC-0300
, also müssen wir diese Informationen, um unsere lokale Zeit Zeichenfolge hinzuzufügen,
String dateTimeString = "2017/04/30 08:10" + " -0300";
Nun können wir es unser Datum Zeitformatierer lesen verwenden,
ZonedDateTime dateTimeInPMST = ZonedDateTime.parse(dateTimeString, dateTimeWithZoneFormatter);
Und wir jetzt kann erhalten das Datum in jeder Zeitzone wir wollen,
ZonedDateTime dateTimeInEST = dateTimeInPMST.withZoneSameInstant(TimeZone.getTimeZone("EST").toZoneId());
Edit 1 ::
den Offset für eine Zeitzone zu erhalten (können sagen, EST
)
int offsetInSeconds = TimeZone.getTimeZone("EST").getRawOffset()/1000;
ZoneOffset zoneOffset = ZoneOffset.ofTotalSeconds(offsetInSeconds);
String zoneOffsetString = zoneOffset.toString();
// "-05:30"
Hinweis dieses :
in -05:30
, müssen wir unsere DateTimeFormat
ändern diese, jetzt
DateTimeFormatter dateTimeWithZoneFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm ZZZ");
Anforderungen anzupassen, können Sie diese hinzufügen zu jedem dateTimeString,
public String makeOffsetAwareDateTimeString(String dateTimeString, String timezone) {
int offsetInSeconds = TimeZone.getTimeZone(timezone).getRawOffset()/1000;
ZoneOffset zoneOffset = ZoneOffset.ofTotalSeconds(offsetInSeconds);
String zoneOffsetString = zoneOffset.toString();
return dateTimeString + " " + zoneOffsetString;
}
Wie von Sarvesh erwähnt, gibt es keine Zeitzone PMST in ZoneId erwähnt, so dass Sie es explizit erwähnen müssen. Sie können die unterstützten Zonen-IDs in ZoneId.java überprüfen – Shriram
Identifizieren oder korrigieren Sie Ihre 'PMST'. –