2016-03-19 55 views
0

Hindistan, Kanada, ABD için tarih ve saat alıyorum. Doğru saat ve tarih alıyorum, Ama üç ülke için aynı zaman dilimi (GMT +5: 30) alıyorum. İşteSaat dilimi düzgün çalışmıyor

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

benim mantık

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); 

olduğu gibi Aslında farklı zaman dilimlerini almalısınız Ben doğru değil

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 

Beni nereye söyleyebilir dilimini tarih ve saati alıyorum Yanıldım?

Şimdiden teşekkürler.

+0

Çıktınız, gösterdiğiniz kodla uyuşmuyor gibi görünüyor. Kodda, biçimlendiriciler 12 saat biçimini kullanır, ancak çıktı 24 saattir. Çıktının "Güncel saat" kelimesi bulunmuyor, yıl çok tuhaf bir şekilde yerleştiriliyor. Son üç dört satırlı blokun yürütüldüğü koddan net değildir (onlar için yöntem yoktur). Çalıştığınız kodu ve verilen çıktıyı gösterir misiniz? –

+0

Tamam ama sorum şu, farklı saat dilimi nasıl elde edildi – Sanjeev

+0

Gerçek kod ve gerçek çıktı olmadan nasıl cevap verebiliriz? –

cevap

0
için Birimi

son SimpleDateFormat biçimlendirici = yeni SimpleDateFormat ("dd MMM yyyy ss: dd: ss z")

baskılı elde etmek için aşağıdaki şekilde kullanabilir

;

İlgili konular