Android: उपयोगकर्ता की भाषा में सप्ताह का वर्तमान दिन (सोमवार आदि) कैसे प्राप्त करें?


80

मैं जानना चाहता हूं कि उपयोगकर्ता की स्थानीय भाषा में सप्ताह का वर्तमान दिन (सोमवार, मंगलवार ...) क्या है। उदाहरण के लिए, "लुंडी" "मार्डी" आदि ... यदि उपयोगकर्ता फ्रांसीसी है।

मैंने इस पोस्ट को पढ़ा है, यह है लेकिन यह केवल उपयोगकर्ता के भाषा में दिन के साथ एक स्ट्रिंग नहीं, एक इंट रिटर्न देता है: एंड्रॉइड में सप्ताह के वर्तमान दिन को प्राप्त करने का सबसे आसान तरीका क्या है?

अधिक सामान्यतः, आप सप्ताह के सभी दिनों और उपयोगकर्ता की भाषा में लिखे गए वर्ष के सभी महीनों को कैसे प्राप्त करते हैं?

मुझे लगता है कि यह संभव है, उदाहरण के लिए Google एजेंडा उपयोगकर्ता की स्थानीय भाषा में लिखे गए दिनों और महीनों को बताता है।

धन्यवाद !!

जवाबों:


168

उपयोगकर्ताओं को लोकेल के संबंध में दिनांक और समय को प्रारूपित करने के लिए SimpleDateFormat का उपयोग करें ।

सप्ताह का वर्तमान दिन प्राप्त करने के लिए छोटा उदाहरण (उदाहरण के लिए "सोमवार") :

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

31

इसे इस्तेमाल करे:

int dayOfWeek = date.get(Calendar.DAY_OF_WEEK);  
String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek];

HI, यदि आप शॉर्टवेयड्स का उपयोग करते हैं, तो यह केवल एक अक्षर दिखा रहा है। लेकिन मुझे दिन के पहले 3 अक्षर दिखाने की आवश्यकता है
संस्कार मुनिअप्पा

ध्यान दें कि सभी उपलब्ध स्थानों तक पहुंच प्राप्त करने के लिए किसी को भी उपयोग करना चाहिए DateFormatSymbols.getInstance()(हालांकि अभी के लिए यह समान परिणाम दे सकता है)।
user905686

20

मुझे पता है कि पहले से ही जवाब है, लेकिन 'शुक्र' की तलाश में कौन है इस तरह की

शुक्र के लिए -

SimpleDateFormat sdf = new SimpleDateFormat("EEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

और जो पूर्ण तिथि स्ट्रिंग चाहते हैं वे शुक्रवार के लिए 4E का उपयोग कर सकते हैं

शुक्रवार के लिए-

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

का आनंद लें...


मुझे आपकी दूसरी पंक्ति पर यह कहते हुए एक त्रुटि मिल रही है कि निर्माण तिथि अपरिभाषित है।

17

चीजों को कम करने के लिए आप इसका उपयोग कर सकते हैं:

android.text.format.DateFormat.format("EEEE", date);

जो एक स्ट्रिंग के रूप में सप्ताह का दिन लौटाएगा।


11

हर्स ने मुझे दिन के नाम ( 0-6साधन monday - sunday) प्राप्त करने के लिए इस्तेमाल किया :

public static String getFullDayName(int day) {
    Calendar c = Calendar.getInstance();
    // date doesn't matter - it has to be a Monday
    // I new that first August 2011 is one ;-)
    c.set(2011, 7, 1, 0, 0, 0);
    c.add(Calendar.DAY_OF_MONTH, day);
    return String.format("%tA", c);
}

public static String getShortDayName(int day) {
    Calendar c = Calendar.getInstance();
    c.set(2011, 7, 1, 0, 0, 0);
    c.add(Calendar.DAY_OF_MONTH, day);
    return String.format("%ta", c);
}

6

tl; डॉ

String output = 
    LocalDate.now( ZoneId.of( "America/Montreal" ) )
             .getDayOfWeek()
             .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

java.time

Java.time कक्षाएं बाद में जावा 8 में बनाया गया और और बैक-पोर्ट जावा 6 और 7 के लिए और Android के लिए काम में शामिल हैंDayOfWeek enum।

दिन मानक आईएसओ 8601 परिभाषा के अनुसार गिने जाते हैं, सोमवार-रविवार के लिए 1-7।

DayOfWeek dow = DayOfWeek.of( 1 );

इस एनम में getDisplayNameदिन के स्थानीय अनुवादित नाम का एक स्ट्रिंग उत्पन्न करने की विधि शामिल है।

Localeवस्तु एक मानव भाषा अनुवाद में इस्तेमाल किया जाएगा निर्दिष्ट करता है और निर्दिष्ट सांस्कृतिक मानदंडों ऐसे कैपिटलाइज़ेशन और विराम चिह्न के रूप में मुद्दों तय करने के लिए।

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

आज की तारीख पाने के लिए, LocalDateकक्षा का उपयोग करें । ध्यान दें कि किसी भी समय के लिए एक समय क्षेत्र महत्वपूर्ण है क्योंकि तारीख दुनिया भर में बदलती है।

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

ध्यान रखें कि लोकेल का टाइम ज़ोन के साथ कोई लेना-देना नहीं है। अलग-अलग ऑर्थोगोनल मुद्दों पर। आप भारत में ज़ोन किए गए दिनांक-समय की फ़्रेंच प्रस्तुति चाहते हैं Asia/Kolkata

Joda समय

अद्यतन: जोडा-टाइम परियोजना, अब रखरखाव मोड में , java.time को प्रवासन की सलाह देती है कक्षाओं में ।

Joda समय पुस्तकालय प्रदान करता है Localeतिथि-समय मूल्यों के संचालित स्थानीयकरण।

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );

String output = formatterUnJourQuébécois.print( now );

System.out.println("output: " + output );

आउटपुट: समदी


जावा के बारे में

Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, औरSimpleDateFormat

Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।

अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है

Java.time कक्षाएं कहाँ से प्राप्त करें?


5

इसे इस्तेमाल करे...

//global declaration
private TextView timeUpdate;
Calendar calendar;

.......

timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate()

.......

//in onStart()
calendar = Calendar.getInstance();
//date format is:  "Date-Month-Year Hour:Minutes am/pm"
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time
String currentDate = sdf.format(calendar.getTime());

//Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat".
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); 
Date date = new Date();
String dayName = sdf_.format(date);
timeUpdate.setText("" + dayName + " " + currentDate + "");

परिणाम है... यहाँ छवि विवरण दर्ज करें

हैप्पी कोडिंग .....


4

देर से जवाब के लिए क्षमा करें। लेकिन यह ठीक से काम करेगा।

daytext=(textview)findviewById(R.id.day);

Calender c=Calender.getInstance();
SimpleDateFormat sd=new SimpleDateFormat("EEEE");
String dayofweek=sd.format(c.getTime());


daytext.setText(dayofweek);

2
(1) यह समाधान पहले से ही स्वीकृत उत्तर में शामिल है । बताएं कि कैसे आपका मूल्य आगे मूल्य बढ़ाता है, या हटाता है। (२) ये वर्ग अब विरासत हैं, java.time कक्षाओं द्वारा इसका समर्थन किया जाता है।
तुलसी बॉर्क

1

मैं सिर्फ कोटलिन में इस समाधान का उपयोग करता हूं:

 var date : String = DateFormat.format("EEEE dd-MMM-yyyy HH:mm a" , Date()) as String


0
//selected date from calender
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time
String currentDate = sdf.format(myCalendar.getTime());

//selcted_day name
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
String dayofweek=sdf_.format(myCalendar.getTime());
current_date.setText(currentDate);
lbl_current_date.setText(dayofweek);

Log.e("dayname", dayofweek);

1
यह अपठनीय है। और आप खराब डिज़ाइन की गई कक्षाओं और लंबे समय तक पुराने का उपयोग कर रहे हैं SimpleDateFormat, Dateऔर Calendar(प्रश्न में भी उपयोग किया जाता है)।
ओले वीवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.