निम्नलिखित दृष्टिकोण काम किया।
import java.util.Set;
import java.util.TimeZone;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
Set<String> zoneIds = DateTimeZone.getAvailableIDs();
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("ZZ");
for (String zoneId : zoneIds) {
String offset = dateTimeFormatter.withZone(DateTimeZone.forID(zoneId)).print(0);
String longName = TimeZone.getTimeZone(zoneId).getDisplayName();
System.out.println("(" + offset + ") " + zoneId + ", " + longName);
}
वहाँ भी अन्य और शायद बेहतर तरीके कि मैं अभी से अनभिज्ञ हूं हो सकता है।
या
import java.util.Set;
import org.joda.time.DateTimeUtils;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
Set<String> zoneIds = DateTimeZone.getAvailableIDs();
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("ZZ");
for (String zoneId : zoneIds) {
String offset = dateTimeFormatter.withZone(DateTimeZone.forID(zoneId)).print(0);
String longName = DateTimeZone.forID(zoneId).getName(DateTimeUtils.currentTimeMillis());
System.out.println("(" + offset + ") " + zoneId + ", " + longName);
}
ग्रीनविच मीन टाइम (Etc/GMT+0
, उदाहरण के लिए) के लिए, यह प्रदर्शित होता है, उदाहरण के +00:00
के बजाय पहले मामले में के रूप में GMT+00:00
प्रदर्शित करने के लिए। mm: hh -
नाम स्थान के लिए उपलब्ध नहीं है, तो यह विधि (public final String getName(long instant)
) में प्रारूप [+] एक स्ट्रिंग देता है। इस प्रकार
एक उपयुक्त Locale
भी इस्तेमाल किया जा सकता है, तो अतिभारित विधि का उपयोग कर की जरूरत है,
public String getName(long instant, Locale locale)
लघु नाम, समन्वित यूनिवर्सल समय के लिए उदाहरण यूटीसी के लिए प्रदर्शित किया जा सकता।
import java.util.Set;
import org.joda.time.DateTimeUtils;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
Set<String> zoneIds = DateTimeZone.getAvailableIDs();
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("ZZ");
for (String zoneId : zoneIds) {
String offset = dateTimeFormatter.withZone(DateTimeZone.forID(zoneId)).print(0);
String shortName = DateTimeZone.forID(zoneId).getShortName(DateTimeUtils.currentTimeMillis());
System.out.println("(" + offset + ") " + zoneId + ", " + shortName);
}
एक उपयुक्त
Locale
साथ
, अगर अतिभारित विधि का उपयोग कर की जरूरत है,
public String getShortName(long instant, Locale locale)
अद्यतन:
का उपयोग Java Time API जावा में एसई 8 जिसमें यह आगे सरलीकृत है ।
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.TextStyle;
import java.util.Locale;
import java.util.Set;
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
for (String zoneId : zoneIds) {
ZoneId zone = ZoneId.of(zoneId);
ZonedDateTime zonedDateTime = ZonedDateTime.now(zone);
ZoneOffset offset = zonedDateTime.getOffset();
String longName = zone.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println("(" + offset + ") " + zoneId + ", " + longName);
}
प्रदर्शन नाम में java.time.format.TextStyle
में विभिन्न शैलियों उपलब्ध हैं। उदाहरण के लिए, संक्षेप TextStyle.SHORT
का उपयोग करके प्रदर्शित किया जा सकता है।
zone.getDisplayName(TextStyle.FULL, Locale.ENGLISH)
"इंडिया टाइम" जैसे लंबे नाम प्रदर्शित करेगा। हालांकि, यह जोडा समय के विपरीत एक पूर्ण नाम नहीं है।
निम्नलिखित दिए गए नाम का पूरा नाम "भारत मानक समय" (जहां भी लागू हो) प्रदर्शित करेगा।
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("zzzz");
String longName = pattern.format(ZonedDateTime.now(ZoneId.of(zoneId)));
निम्नलिखित प्रदर्शित करेगा एक क्षेत्र ऑफसेट (पैटर्न का पूंजीकरण ध्यान दें) GMT+05:30
की तरह दिए गए क्षेत्र के।
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("ZZZZ");
String longName = pattern.format(ZonedDateTime.now(ZoneId.of(zoneId)));
निम्नलिखित संक्षिप्त रूपों को प्रदर्शित करने के लिए है।
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("zzz");
String longName = pattern.format(ZonedDateTime.now(ZoneId.of(zoneId)));
राजधानी ZZZ
के लिए +0530
की तरह क्षेत्र ऑफसेट, +0000
।
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html