java - जावा के दिन-प्रति-सप्ताह का एक कस्टम संग्रह बनाएं




calendar (3)

मुझे इस तरह एक कस्टम कैलेंडर चाहिए:

enum TradingDays {Monday, Tuesday, Wednesday, Thursday, Friday};

फिर मुझे इसे पुनरावृति करने की आवश्यकता है और जांचना होगा कि क्या एक विशेष तत्व तत्व सप्ताह के दिन है। समस्या यह है कि जवा कैलेंडर मेरे कैलेंडर से सप्ताह के दिनों से मेल नहीं खाता है। इसलिए:

Calendar now = Calendar.getInstance();

TradingDays.Monday is not equal to any of now.get(Calendar.DAY_OF_WEEK);

तो मैं अपने कैलेंडर से सोमवार, मंगलवार आदि को कैसे जलगता हूं? क्या ये जावा कैलेंडर से समान प्रकार (इस मामले में एक पूर्णांक मान) है?

पी एस मुझे उस कैलेंडर व्यापार दिवस की ज़रूरत है क्योंकि इसे उपयोगकर्ता को दिखाया गया है ताकि वह किस दिन व्यापार को चुन ले?


tl; डॉ

Set<DayOfWeek> tradingDays = EnumSet.range( DayOfWeek.MONDAY , DayOfWeek.FRIDAY ) ; // Mon, Tue, Wed, Thu, & Fri.
Boolean todayIsTradingDay = tradingDays.contains( LocalDate.now( ZoneId.of( "America/Montreal" ) ).getDayOfWeek() ) ;

विवरण

यह कार्यक्षमता जावा में बनाई गई है।

java.time.DayOfWeek enum

जावा में java.time.DayOfWeek enum शामिल है।

अपने कोड को अधिक आत्म-दस्तावेजी बनाने, टाइप-सुरक्षा प्रदान करने और वैध मानों की एक श्रृंखला सुनिश्चित करने के लिए केवल 1-7 पूर्णांकों के बजाय इस एन्यूम के ऑब्जेक्ट्स के पास रहें।

invoices.printReportForDayOfWeek( DayOfWeek.MONDAY );

सोमवार से रविवार तक क्रमांकन 1-7, आईएसओ 8601 मानक के अनुसार है

getDisplayName को कॉल करके दिन का एक स्थानीयकृत नाम प्राप्त करें

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;  // Or Locale.US, etc.

दिन के सप्ताह के ऑब्जेक्ट का संग्रह

सप्ताह के एक से अधिक दिनों को ट्रैक करने के लिए, एक EnumSet ( Set कार्यान्वयन) या EnumMap ( Map कार्यान्वयन) का उपयोग करें।

Set<DayOfWeek> weekend = EnumSet.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY ) ;

Boolean todayIsWeekend = weekend.contains( LocalDate.now( ZoneId.of( "America/Montreal" ) ).getDayOfWeek() ) ;

या इस प्रश्न के मामले में विशेष रूप से, सप्ताह के दिनों का संग्रह। शायद एक स्थिर अंतिम स्थिरता के रूप में परिभाषित करें यदि परिभाषा एप के निष्पादन के दौरान बदलती नहीं है।

static final Set<DayOfWeek> tradingDays = EnumSet.of( DayOfWeek.MONDAY , DayOfWeek.TUESDAY , DayOfWeek.WEDNESDAY , DayOfWeek.THURSDAY , DayOfWeek.FRIDAY ) ;

या एक अनुक्रमिक क्रम में परिभाषित एन्यूम ऑब्जेक्ट्स की एक श्रेणी के रूप में एक EnumSet को परिभाषित करके भी कम करें सोमवार और शुक्रवार निर्दिष्ट करें और EnumSet बीच में मूल्यों को भरने दें। EnumSet.range उपयोग करें

static final Set<DayOfWeek> tradingDays = EnumSet.range( DayOfWeek.MONDAY , DayOfWeek.FRIDAY ) ; // Mon, Tue, Wed, Thu, & Fri.

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

ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( zoneId ) ;
DayOfWeek todayDow = today.getDayOfWeek() ;
Boolean todayIsTradingDay = tradingDays.contains( todayDow ).getDayOfWeek() ) ;

जावा के बारे में। समय

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

जोडा-टाइम प्रोजेक्ट, अब रखरखाव मोड में , जावा के प्रवासन को सलाह देता है। समय

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

ज्यादातर जावा। टाइम कार्यक्षमता को तीन-टेन-बैकपोर्ट में जावा 6 और 7 में बैक-पोर्ट किया गया है और इसे एंड्रॉइड के लिए तीन टाएंबैप में अनुकूलित किया गया है

तीन टन अतिरिक्त परियोजना java.time को अतिरिक्त कक्षाओं के साथ बढ़ाता है। यह प्रोजेक्ट जावा के संभावित भावी परिवर्धन के लिए एक सिद्ध मैदान है। आपको यहां कुछ उपयोगी वर्ग यहां मिल सकते हैं जैसे Interval , YearWeek , YearQuarter , और अधिक


अपने एंमान के अंदर एक कन्स्ट्रक्टर बनाएँ जो एक इंट मान लेता है:

सार्वजनिक कक्षा कैलेंडर मुख्य {

enum TradingDays {
Monday(2), Tuesday(3), Wednesday(4), Thursday(5), Friday(6);

private int value;

private TradingDays(int value) {
    this.value = value;
}
};

public static void main(String[] args) {

Calendar now = Calendar.getInstance();

if (now.get(Calendar.DAY_OF_WEEK) == TradingDays.Tuesday.value) {
    // Chose Wednesday as the day to trade
    System.out.println(now.get(Calendar.DAY_OF_WEEK));
    System.out.println(TradingDays.Tuesday.value);
}
}

}


enum एस के साथ आप बहुत सारी चीजें कर सकते हैं जो शायद आप से परिचित हैं:

फ़ाइल TradingDays.java :

public enum TradingDays {
    Monday(Calendar.MONDAY),
    Tuesday(Calendar.TUESDAY),
    Wednesday(Calendar.WEDNESDAY),
    Thursday(Calendar.THURSDAY),
    Friday(Calendar.FRIDAY);

    private int calendarValue;

    TradingDays(int calendarValue) {
        this.calendarValue = calendarValue;
    }

    public static TradingDays today() {
        return fromCalendarValue(Calendar.getInstance().get(Calendar.DAY_OF_WEEK));
    }

    public static TradingDays fromCalendarValue(int calendarValue) {
        for(TradingDays td : TradingDays.values()) {
            if(td.calendarValue == calendarValue) {
                return td;
            }
        }
        throw new IllegalArgumentException(calendarValue + " is not a valid TradingDays calendarValue");
        // or simply return null
    }

};




calendar