मैं बटन क्लिक करते समय Android मोबाइल से समय क्षेत्र प्राप्त करना चाहता हूं।
मैं बटन क्लिक करते समय Android मोबाइल से समय क्षेत्र प्राप्त करना चाहता हूं।
जवाबों:
क्या आपने उपयोग करने की कोशिश की है TimeZone.getDefault()
:
अधिकांश एप्लिकेशन TimeZone.getDefault () का उपयोग करेंगे, जो उस समय क्षेत्र के आधार पर TimeZone लौटाता है जहां प्रोग्राम चल रहा है।
Ref: http://developer.android.com/reference/java/util/TimeZone.html
DateTimeZone.forTimeZone(TimeZone.getDefault());
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());
आउटपुट:
टाइमजोन GMT + 09: 30 टाइमज़ोन आईडी :: ऑस्ट्रेलिया / डार्विन
संपादित करें: मामले को सही किया
मुझे उन ऑफसेटों की आवश्यकता थी जिनमें न केवल दिन की रोशनी की बचत का समय शामिल था बल्कि एक संख्यात्मक के रूप में । यहाँ वह कोड है जो मैंने उपयोग किया है यदि कोई उदाहरण के लिए देख रहा है।
मुझे "3.5" (3:30 ') की प्रतिक्रिया मिलती है, जो कि मैं तेहरान में, सर्दियों में ईरान और गर्मियों के लिए "4.5" (4:30') की उम्मीद करता हूं ।
मुझे इसकी एक स्ट्रिंग के रूप में भी आवश्यकता थी इसलिए मैं इसे एक सर्वर पर पोस्ट कर सकता हूं ताकि आपको अंतिम पंक्ति की आवश्यकता न हो।
सही समय क्षेत्र प्राप्त करने के लिए:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
//Import part : x.0 for double number
double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0;
String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);
इस कोड को आज़माएं-
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
यह उपयोगकर्ता को चयनित समयक्षेत्र लौटाएगा।
Calendar
लिए एक वस्तु बनाना एक बकवास है। इस प्रकार की वस्तु का निर्माण महंगा है। TimeZone.getDefault()
इसे प्राप्त करने का उपयुक्त तरीका है।
TimeZone timeZone = TimeZone.getDefault();
timeZone.getID();
जैसे छपेगा
Asia/Kolkata
सरल दिनांक प्रारूप के साथ सबसे सरल समाधान: SimpleDateFormat ("ZZZZZ"):
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
Locale.getDefault());
Date currentLocalTime = calendar.getTime();
DateFormat date = new SimpleDateFormat("ZZZZZ",Locale.getDefault());
String localTime = date.format(currentLocalTime);
System.out.println(localTime+ " TimeZone " );
==> आउटपुट है: +05: 30
Http://developer.android.com/reference/android/text/format/Time.html के अनुसार आपको डिवाइस के वर्तमान समयक्षेत्र को पुनः प्राप्त करने के लिए Time.getCurrentTimezonezone () का उपयोग करना चाहिए।
आधुनिक उत्तर:
ZoneId zone = ZoneId.systemDefault();
System.out.println(zone);
जब मैंने इस स्निपेट को ऑस्ट्रेलिया / सिडनी टाइम ज़ोन में चलाया, तो आउटपुट बिल्कुल यही था:
Australia/Sydney
यदि आप चाहते हैं कि ग्रीष्मकालीन समय (DST) समय क्षेत्र का नाम या संक्षिप्त नाम:
DateTimeFormatter longTimeZoneFormatter = DateTimeFormatter.ofPattern("zzzz", Locale.getDefault());
String longTz = ZonedDateTime.now(zone).format(longTimeZoneFormatter);
System.out.println(longTz);
DateTimeFormatter shortTimeZoneFormatter = DateTimeFormatter.ofPattern("zzz", Locale.getDefault());
String shortTz = ZonedDateTime.now(zone).format(shortTimeZoneFormatter);
System.out.println(shortTz);
Eastern Summer Time (New South Wales) EST
TimeZone
अन्य उत्तर के अधिकांश में इस्तेमाल किया वर्ग क्या हम यह सवाल पूछे जाने 2011 में कहा गया था, भले ही यह खराब तरीके से तैयार किया गया था, था। आज यह लंबे समय से पुराना है, और मैं सलाह देता हूं कि इसके बजाय हम जावा का उपयोग करते हैं। आधुनिक जावा दिनांक और समय एपीआई जो 2014 में सामने आया था।
java.time पुराने और नए दोनों Android उपकरणों पर अच्छी तरह से काम करता है। इसके लिए बस कम से कम जावा 6 की आवश्यकता होती है ।
org.threeten.bp
सबपेकेज से दिनांक और समय की कक्षाओं का आयात करते हैं ।java.time
पहली बार वर्णित किया गया था।java.time
जावा 6 और 7 का बैकपोर्ट (जेएसआर -310 के लिए थ्रीटेन)।एपीआई 26 और उससे अधिक वाले उपकरणों के लिए, आप इसे इस तरह प्राप्त कर सकते हैं:
ZonedDateTime.now().getZone().toString();
यहाँ सभी उत्तर दिवालिएपन पैरामीटर को असत्य पर सेट करने के लिए सुझाव देते हैं । यह कई टाइमज़ोन के लिए गलत है, जो संक्षिप्त नामों को वर्ष के समय के आधार पर बदलते हैं (जैसे ईएसटी बनाम ईडीटी)।
नीचे दिए गए समाधान से आपको टाइमज़ोन की वर्तमान तिथि के अनुसार सही संक्षिप्त नाम मिल जाएगा।
val tz = TimeZone.getDefault()
val isDaylite = tz.inDaylightTime(Date())
val timezone = tz.getDisplayName(isDaylite, TimeZone.SHORT)
TimeZone
वर्ग खराब तरीके से तैयार है और लंबे समय पुराना है।