2011-07-22 14 views
17

-ब-दिन के नाम का पता लगाएं? क्या इसके लिए पहले से ही कुछ फ़ंक्शन हैं?वर्ष, माह और दिन

+2

आप अपने जवाब मिला है, तो आप इस सवाल का जवाब है कि आप मदद की सबसे को स्वीकार करना चाहिए। – RMT

उत्तर

5

आप इसे खोजने के लिए Calendar ऑब्जेक्ट का उपयोग कर सकते हैं।

एक बार जब आप कैलेंडर उदाहरण बनाने आप DAY_OF_WEEK मिल (जो एक पूर्णांक है) तो आप वहाँ से दिन पा सकते हैं)

आप एक स्विच बयान like so उपयोग कर सकते हैं:

import java.util.*; 

public class DayOfWeek { 

    public static void main(String[] args) { 
     Calendar cal = Calendar.getInstance(); 
     int day = cal.get(Calendar.DAY_OF_WEEK); 
     System.out.print("Today is "); 
     switch (day) { 
      case 1: 
       System.out.print("Sunday"); 
       break; 
      case 2: 
       System.out.print("Monday"); 
       break; 
      case 3: 
       System.out.print("Tuesday"); 
       break; 
      case 4: 
       System.out.print("Wednesday"); 
       break; 
      case 5: 
       System.out.print("Thursday"); 
       break; 
      case 6: 
       System.out.print("Friday"); 
       break; 
      case 7: 
       System.out.print("Saturday"); 
     } 
     System.out.print("."); 
    } 
} 
+0

और यह आपको एक int, आपको – Bozho

+0

नाम नहीं देगा जो केवल अंग्रेज़ी है। जर्मन के बारे में क्या? – Bozho

+0

@ बोझो, अच्छी तरह से आप भाषा बदल सकते हैं, या आप इसे अंतर्राष्ट्रीयकृत कर सकते हैं, इसलिए यह लोकेल ले जाएगा और इसे आप जिस भाषा को पसंद करते हैं उसे सेट करें – RMT

8

एक का निर्माण वर्ष, महीने और दिन के साथ ग्रेगोरियन कैलेंडर, फिर दिन का नाम ढूंढने के लिए पूछें। कुछ इस तरह:

int year = 1977; 
int month = 2; 
int dayOfMonth = 15; 
Calendar myCalendar = new GregorianCalendar(year, month, dayOfMonth); 

int dayOfWeek = myCalendar.get(Calendar.DAY_OF_WEEK); 

ध्यान दें कि सप्ताह के दिन किसी पूर्णांक स्थान के सप्ताह दिन प्रतिनिधित्व में दिन के क्रमसूचक प्रतिनिधित्व के रूप में दिया जाता है। आईई, एक लोकेल में जहां सप्ताहांत सोमवार को शुरू होता है और रविवार को समाप्त होता है, एक 2 मंगलवार का प्रतिनिधित्व करेगा, जबकि यदि लोकेल सप्ताहांत रविवार को शुरू होता है तो वही 2 सोमवार का प्रतिनिधित्व करेगा।

संपादित

और जवाब संपादन के बहुत हो रहा है के बाद से वहाँ, मेरा पीछा जोड़ने की अनुमति:

DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault()); 
String dayOfMonthStr = symbols.getWeekdays()[dayOfMonth]; 

ईमानदार माना जाता है, मैं SimpleDateFormatter दृष्टिकोण बेहतर लगता है तो क्योंकि यह ऊपर दिखाए गए कोड के समान कोड को समाहित करता है। मुझे इसके बारे में सब भूलने के लिए मूर्खतापूर्ण।

+1

सावधानी: माह शून्य आधारित है, यह 15 मार्च होगा! (फरवरी नहीं) –

+0

मुझे पता है, मैं अपने उदाहरण में मार्च के Ides के लिए लक्ष्य था; पी – Perception

+0

शायद, लेकिन मुझे यकीन है कि अभी भी कुछ प्रोग्रामर इसे नहीं जानते हैं! –

9

सप्ताह दिन का नाम लोकेल प्रति अलग है। इसलिए आपको उचित लोकेल के साथ DateFormat का उपयोग करना होगा। उदाहरण के लिए:

SimpleDateFormat format = new SimpleDateFormat("EEEE"); 
System.out.println(format.format(date)); 

Date वस्तु कई मायनों में प्राप्त किया जा सकता है, तो बहिष्कृत Date(..) निर्माता सहित Calendar.set(..) तरीकों या Joda समय DateTime। (बाद के लिए आप उपयोग कर सकते Joda समय के अपने DateTimeFormat)

1
new GregorianCalendar().setTime(new Date()).get(DAY_OF_WEEK) 

है कि आप एक नंबर, Calendar.SUNDAY == 1, Calendar.MONDAY == 2 देता है, ...

1

हाँ, पर यह JDK के साथ एक नहीं बल्कि लंबी प्रक्रिया है। JodaTime एक बेहतर विकल्प हो सकता है (मैंने इसका उपयोग नहीं किया है)।

सबसे पहले, आपको Calendar ऑब्जेक्ट मिलता है, ताकि आप दिन/माह/वर्ष/टाइमज़ोन से दिनांक बना सकें। बहिष्कृत Date रचनाकारों में से एक का उपयोग न करें।

फिर उस कैलेंडर से Date ऑब्जेक्ट प्राप्त करें, और इसे SimpleDateFormat पर पास करें। ध्यान दें कि स्वरूप वस्तुएं थ्रेडसेफ नहीं हैं।

// by default, this Calendar object will have the current timezone 
    Calendar cal = GregorianCalendar.getInstance(); 
    cal.set(2011, 6, 22); 

    // this formatter will have the current locale 
    SimpleDateFormat format = new SimpleDateFormat("EEEE"); 

    System.out.println(format.format(cal.getTime())); 
+0

नोट: कैलेंडर में, महीने शून्य-आधारित हैं। 7 अगस्त के बराबर है, जुलाई नहीं। – BalusC

+0

@ बाल्लूसी - सच, संपादित। मैं शायद ही कभी उस विधि का मुख्य मेन्यू कोड में उपयोग करता हूं, लेकिन यूनिट परीक्षणों में हर समय इसे जला देता हूं। जब मैंने उदाहरण चलाया तो मुझे क्या पता चला कि मुझे अधिक ध्यान देना चाहिए था। – parsifal

12

आप अलग अलग स्थानों के लिए सप्ताह के दिनों के नाम पाने के लिए this की तरह कुछ कर सकते हैं।

DateFormatSymbols dfs = new DateFormatSymbols(usersLocale); 
String weekdays[] = dfs.getWeekdays(); 

इस के साथ जोड़ा जा सकता है कि:

String nameOfDay = weekdays[day]; 
3
Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.DAY_OF_MONTH, 22); //Set Day of the Month, 1..31 
cal.set(Calendar.MONTH,6); //Set month, starts with JANUARY = 0 
cal.set(Calendar.YEAR,2011); //Set year 
System.out.println(cal.get(Calendar.DAY_OF_WEEK)); //Starts with Sunday, 6 = friday 
34

उपयोग:

Calendar cal = Calendar.getInstance(); 
int day = cal.get(Calendar.DAY_OF_WEEK); 

आप जो खोज रहे हैं प्राप्त करने के लिए

यहाँ महत्वपूर्ण हिस्सा हैके पैटर्न के साथ SimpleDateFormat सप्ताह के दिन का नाम पाने के लिए।

// Assuming that you already have this. 
int year = 2011; 
int month = 7; 
int day = 22; 

// First convert to Date. This is one of the many ways. 
String dateString = String.format("%d-%d-%d", year, month, day); 
Date date = new SimpleDateFormat("yyyy-M-d").parse(dateString); 

// Then get the day of week from the Date based on specific locale. 
String dayOfWeek = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date); 

System.out.println(dayOfWeek); // Friday 

यहां यह सब आपके लिए एक अच्छी जावा कक्षा में लपेटा गया है। जब Joda-Time लाइब्रेरी का उपयोग कर

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.*; 


public class DateUtility 
{ 

    public static void main(String args[]){ 
     System.out.println(dayName("2015-03-05 00:00:00", "YYYY-MM-DD HH:MM:ss")); 
    } 

    public static String dayName(String inputDate, String format){ 
     Date date = null; 
     try { 
      date = new SimpleDateFormat(format).parse(inputDate); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date); 
    } 
} 
+0

+2 अगर मैं कर सकता था ... –

+1

स्वीकार्य उत्तर होना चाहिए! Java.text.ParseException आयात करने के लिए मत भूलना; आयात java.text.SimpleDateFormat; आयात java.util। *; ' –

0

तिथि-समय काम इस तरह की आसान होता है। एक साधारण एक लाइनर।

String dayOfWeek = new LocalDate(2014, 1, 2).dayOfWeek().getAsText(java.util.Locale.ENGLISH); 

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

जब चलाने ...

dayOfWeek: Thursday 
संबंधित मुद्दे