2016-03-19 27 views
0

Ich bekomme Datum und Uhrzeit für Indien, Kanada, USA. Ich bekomme Zeit und Datum richtig, Aber ich bekomme die gleiche Zeitzone (GMT +5: 30) für drei Länder. Eigentlich sollte ich verschiedene Zeitzonen erhalten wie fürZeitzone funktioniert nicht richtig

India ------ Date IST. 
Canada ------ Date PST. 
USA ------ Date PST. 

Hier ist meine Logik ist

public void getDate(String timeZoneId) { 
    String selectedId = timeZoneId; 
    TimeZone timezone = TimeZone.getTimeZone(selectedId); 
    TimeZoneName = timezone.getDisplayName(); 
    Log.v("TimeZoneName","TimeZoneName "+TimeZoneName); 
    int TimeZoneOffset = timezone.getRawOffset() 
     /(60 * 1000); 
    int hrs = TimeZoneOffset/60; 
    int mins = TimeZoneOffset % 60; 
    miliSeconds = miliSeconds + timezone.getRawOffset(); 
    resultdate = new Date(miliSeconds); 
    dateInCountry=sdf.format(resultdate); 
    miliSeconds = 0; 
} 

private void getGMTTime() { 
    current = Calendar.getInstance(Locale.ENGLISH); 
    miliSeconds = current.getTimeInMillis(); 
    TimeZone tzCurrent = current.getTimeZone(); 
    int offset = tzCurrent.getRawOffset(); 
    if (tzCurrent.inDaylightTime(new Date())) { 
     offset = offset + tzCurrent.getDSTSavings(); 
    } 
    miliSeconds = miliSeconds - offset; 
    resultdate = new Date(miliSeconds); 
    System.out.println(sdf.format(resultdate)); 
} 

getGMTTime(); 
getDate("Asia/Calcutta"); 
final SimpleDateFormat formatter = new SimpleDateFormat("MMM dd yyyy hh:mm:ss a "); 
indTime.setText("Current Time " + String.valueOf(formatter.format(resultdate)) + TimeZoneName.substring(0,3)); 

getGMTTime(); 
getDate("Canada/Pacific"); 
final SimpleDateFormat canadaFormatter = new SimpleDateFormat("MMM dd yyyy hh:mm:ss a ",Locale.CANADA); 
canadaTime.setText("Current Time " + String.valueOf(canadaFormatter.format(resultdate)) + TimeZoneName); 
canadaTime.setTypeface(titleType); 

getGMTTime(); 
getDate("US/Pacific"); 
final SimpleDateFormat usaFormatter = new SimpleDateFormat("MMM dd yyyy hh:mm:ss a ", Locale.US); 
usaTime.setText("Current Time " + String.valueOf(usaFormatter.format(resultdate)) + TimeZoneName); 

Ich bin immer Datum und Uhrzeit korrekt, aber nicht die Zeitzone

Ind  Mar 19 13:28:40 GMT+05:30 2016 

Canada XXX XX XX:XX:XX GMT+05:30 2016 

USA  XXX XX XX:XX:XX GMT+05:30 2016 

Sie mir sagen, wo Ich habe mich geirrt?

Vielen Dank im Voraus.

+0

Es scheint, dass Ihre Ausgabe nicht dem Code entspricht, den Sie angezeigt haben. Im Code verwenden die Formatierer das 12-Stunden-Format, aber die Ausgabe erfolgt im 24-Stunden-Format. Die Ausgabe enthält keine Worte "Aktuelle Zeit", das Jahr ist sehr seltsam platziert. Es ist unklar, aus dem Code, wo die letzten drei Vier-Zeilen-Blöcke ausgeführt werden (keine Methode für sie). Können Sie den genauen Code, den Sie ausführen, und die angegebene Ausgabe anzeigen? –

+0

Ok, aber meine Frage war, wie man verschiedene Zeitzone – Sanjeev

+0

bekommen Wie können wir es ohne den echten Code und die reale Ausgabe beantworten? –

Antwort

0

Sie in der folgenden Art und Weise können die Zeitzone

Formatierer final Simple neue Simple = gedruckt bekommen ("MMM dd yyyy hh: mm: ss z");