einfach selbst zu beantworten, so dass es jemanden anderes helfen kann:
Ich wurde als String mit Datum als Eingabe kann sagen:
String startDate = "2016-04-21T00:00:00+0530"
//i can calculate the timezone offset using
String offSet = startDate.substring(startDate.length() - 5) //gives +0530
Methode verwendet, Zeitzone zu berechnen. Hier geben wir Offset oben und die unten Methode gibt das Time-Zone Objekt berechnet:
public static TimeZone fetchTimeZone(String offset) {
if (offset.length() != 5) {
return null
}
TimeZone tz
Integer offsetHours = Integer.parseInt(offset.substring(0, 3))
Integer offsetMinutes = Integer.parseInt(offset.substring(3))
String[] ids = TimeZone.getAvailableIDs()
for (int i = 0; i < ids.length; i++) {
tz = TimeZone.getTimeZone(ids[i])
long hours = TimeUnit.MILLISECONDS.toHours(tz.getRawOffset())
long minutes = Math.abs(TimeUnit.MILLISECONDS.toMinutes(tz.getRawOffset()) % 60)
if (hours != offsetHours || minutes != offsetMinutes) {
tz = null
} else {
break
}
}
return tz
}
Schließlich verwende ich die Zeitzone von oben Verfahren ein beliebiges Datum zu formatieren, zu dieser Zeitzone:
SimpleDateFormat timeZonedFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
TimeZone timeZone = fetchTimeZone(offSet) //from above method and offset from first code
timeZonedFormatter.setTimeZone(timeZone);
//this timeZonedFormatter can be used to format any date into the respective timeZone
Ich glaube, Sie bräuchten 4 'Z ist dafür. '(" yyyy-MM-dd'T'HH: mm: ssZZZZ) ' – Zircon
Es ist nicht möglich: Mehrere Zeitzonen können zu einem bestimmten Zeitpunkt die gleiche Zeitverschiebung haben. – assylias
Sie finden Ihre Antwort hier: http://stackoverflow.com/questions/1305350/how-to-get-the-current-date-and-time-of-your-timezone-in-java – Akah