2011-03-25 7 views
5

की अनुमति देने की तारीख को प्रारूपित करें, मैं Date प्रिंट करने की कोशिश कर रहा हूं, वैसे ही DateFormat.getDateTimeInstance() ऐसा करता है।शून्य दिनांक

format फेंकता एक NullPointerException जब null गुजर, इसलिए यदि वहाँ एक अलग दृष्टिकोण है कि null (या "null") के बजाय वापस होगा है मैं सोच रहा है?

कुछ मैं

Date d = null; 
System.out.println(d==null ? null : DateFormat.getDateTimeInstance().format(d)); 
+0

'डेटफॉर्मैट' वर्ग को विस्तारित करने के बारे में - लेकिन शायद यह संभवतः सादा नल चेक से अधिक जटिल है जो आप पहले से कर रहे हैं। – Nishan

+0

डी == शून्य के साथ वास्तव में क्या गलत है? शून्य: DateFormat.getDateTimeInstance() प्रारूप (डी)) – Ingo

उत्तर

14

तुम सिर्फ एक उपयोगिता विधि के अंदर कॉल लपेट सकता है:

public class DateUtils { 
    public static String formatDateTime(Date dateOrNull) { 
     return (dateOrNull == null ? null : DateFormat.getDateTimeInstance().format(dateOrNull)); 
    } 
} 

निजी निर्माता और जावाडोक संक्षिप्तता के लिए छोड़े गए।

+0

धन्यवाद, यही वह है जो मैं करने की योजना बना रहा था। बस पहिया reinventing से बचना चाहता था ... –

2

क्या अपने मौजूदा कोड के साथ समस्या यह है के बजाय फोन होगा?

null एक विशेष मामला है, और आपने फैसला किया है कि आप इस मामले में एक विशेष व्यवहार चाहते हैं ("null" लौटकर) किसी अन्य विशेष व्यवहार (एनपीई फेंकना) के बजाय। फ़ॉर्मेटिंग विधि के भीतर इस तर्क को दफनाने के बजाए शीर्ष स्तर पर स्विच करके इसे अभिव्यक्त करने के लिए यह तर्कसंगत क्लीनर है।

if (d == null) { 
    return "null"; // or whatever special case 
} 
else { 
    return DateFormat.getDateTimeInstance().format(d); 
} 
:

यह थोड़ा क्लीनर एक पूर्ण करता है, तो-और कुछ नहीं बल्कि एक तृतीयक ऑपरेटर से, हालांकि, यह स्पष्ट दो अलग-अलग शाखाओं देखते हैं कि बनाने के लिए (सामान्य, और विशेष मामलों null) का उपयोग हो सकता है

शून्य मामले में वापसी मूल्य आपके विधि के javadocs में भी स्पष्ट किया जाना चाहिए।

+0

वास्तव में मेरे मौजूदा कोड में कोई समस्या नहीं है। बात यह है कि, मैं कुछ तिथियों को लॉग इन करने के लिए कई बार इसका उपयोग कर रहा हूं, और यदि मैं इसे एक बार भूल जाता हूं, तो मेरा एप्लिकेशन कुछ दिन क्रैश हो सकता है क्योंकि यह 'शून्य' लॉग नहीं कर सका। तो अगर कुछ मानक तरीका था, तो मुझे इसका उपयोग करना अच्छा लगेगा। –

+0

"इसे एक बार भूल जाओ"? मैं इस धारणा के तहत था कि यह पहले से ही एक उपयोगिता समारोह का हिस्सा था। यदि नहीं, तो यह आपका समाधान है, जेबी निजेट के जवाब के अनुसार :) –

संबंधित मुद्दे