यदि आप गुवा का उपयोग कर रहे हैं, तो इस समस्या का एक बहुत ही सुरुचिपूर्ण समाधान है।
अमरूद में दो साफ वर्ग हैं, जैसे कि Range और ContiguousSet, जो आपको वास्तव में आवश्यकतानुसार लागू करता है: पहला मूल्यों की श्रृंखलाओं पर चलता है, और दूसरा - एक सीमा को अलग-अलग मूल्यों के सेट में परिवर्तित करने में सक्षम होता है।
LocalDate start = LocalDate.parse("2015-01-01");
LocalDate end = LocalDate.parse("2019-02-01");
Range<LocalDate> range = Range.closed(start, end); //Creates a "closed" range, that is both dates are inclusive. There are also options like "openClosed", "closedOpen" and "open"
final Set<LocalDate> daySet = ContiguousSet.create(range, LocalDateDomain.INSTANCE); //Create a "virtual" set of days in given the range. "virtual" part means that if you create a set of 10 thousand years, it will not eat your memory at all
for (LocalDate day : daySet) {
//...operation...
}
व्यक्तिगत रूप से, मैं वास्तव में, इस तरह से पसंद करते हैं के रूप में यह समाप्त समझ के साथ कुछ समस्याएं/खुला पर्वतमाला बंद कर दिया, और पढ़ने के लिए कोड बहुत आसान है और बनाता है: दोनों (एक साथ JodaTime के साथ) के उपयोग के
उदाहरण समझते हैं, प्रदर्शन पर कोई प्रभाव नहीं पड़ते हैं। साथ ही, यह किसी भी प्रकार की तिथियों, किसी भी पुस्तकालय (आप YodaTime को जावा 8 तिथियों या यहां तक कि जावा 7- दिनांक-आधारित कार्यान्वयन में भी स्वैप कर सकते हैं) के साथ काम करता है।
इसके अलावा, यह आपको चौराहे, यूनियनों, श्रेणियों की फैलाव, अविश्वसनीय रूप से तेज़ "युक्त" जैसी श्रेणियों पर कुछ साफ संचालन करने की अनुमति देता है।
केवल कमियां हैं: अमरूद पर
- निर्भरता।
- एक विशेष "DiscreteDomain" कक्षा बनाने की आवश्यकता है, जिसे गुवा समझने के लिए उपयोग करता है कि एक तिथि समाप्त होती है और अन्य शुरू होता है। LocalDateDomain कार्यान्वयन के
उदाहरण जो अमरूद और JodaTime के बीच एक पुल के रूप में संचालित:
public class LocalDateDomain extends DiscreteDomain<LocalDate> {
public static final LocalDateDomain INSTANCE = new LocalDateDomain();
@Override
public LocalDate next(LocalDate value) {
return value.plusDays(1);
}
@Override
public LocalDate previous(LocalDate value) {
return value.minusDays(1);
}
@Override
public long distance(LocalDate start, LocalDate end) {
return Days.daysBetween(start, end).getDays();
}
}
मैं शुरुआत करते हैं, Joda समय का उपयोग कर या java.time ... जावा का कौन सा संस्करण आप उपयोग कर रहे है? (भले ही आपको java.util.Date का उपयोग करना पड़े, कम से कम SimpleDateFormat को पार्स करने के लिए उपयोग करें ...) –
[यह प्रश्न पहले ही यहां दिए गए हैं] [1] [1]: http: // stackoverflow .com/प्रश्न/16785643/दिनांक-दिनांक-दिनांक-दिनांक-दो-दिनांक –
मैं जावा 7 का उपयोग कर रहा हूं। मैंने यह उपयोग सुना है। डेट अच्छा नहीं है, इसलिए जोडा टाइम एक है अच्छा विकल्प @ राहुल: धन्यवाद! – Camelaria