2010-08-12 7 views
5

के पहले दिन पाने के लिए मैं एक रिपोर्टिंग उपकरण है जो केवल एक लाइन अभिव्यक्तिकेवल एक अभिव्यक्ति कल की तिथि और माह

समर्थन उदाहरण से उपयोग कर रहा हूँ मैं कल

वर्ग की तिथि प्राप्त करना चाहते हैं कैलेंडर एक ऐड विधि है, लेकिन यह शून्य देता है तो

Calendar.getInstance().add(Calendar.DAY_OF_MONTH,-1).getTime() 

काम नहीं किया

पता नहीं कैसे यह किया

०१२३५१६४१०६ पाने के लिए

धन्यवाद

+2

कल की तारीख किस प्रारूप में है? कैलेंडर ऑब्जेक्ट के रूप में? एक स्ट्रिंग के रूप में? उपयोग के रूप में। डेट? एक वर्ग के रूप में? डेट? – Stephen

उत्तर

2

तो यह वास्तव में एक एक लाइनर हो गया है और यह फर्क नहीं पड़ता अगर कोड समझा जा सकता है, मुझे लगता है कि निम्नलिखित बयान से काम करना चाहिए:

Date yesterday = new SimpleDateFormat("yyyyMMdd").parse(
    ""+(Integer.parseInt(new SimpleDateFormat("yyyyMMdd").format(new Date()))-1)); 

यह प्रारूप वर्तमान तिथि "yyyyMMdd", उदाहरण के लिए "20100812" आज के लिए इसे एक int: 20100812 के रूप में पार करता है, एक: 20100811 घटाता है, और उसके बाद पिछले प्रारूप का उपयोग करके "20100811" तारीख को पार करता है। यह आज भी काम करेगा यदि आज एक महीने का पहला महीना है, क्योंकि महीने के 0 वें महीने को पिछले महीने के अंतिम दिन के रूप में एक लेंसेंट डेटफॉर्मेट द्वारा पार्स किया जाता है।

प्रारूप "yyyyDDD" को भी काम करना चाहिए (डी वर्ष का दिन)। इस प्रकार

Date firstday = new SimpleDateFormat("yyyyMMdd").parse(
    new SimpleDateFormat("yyyyMM").format(new Date())+"01"); 
+0

@jarnbjo धन्यवाद ~~ अच्छी तरह से काम करता है – chun

+0

@jarnbjo मुझे खेद है, मैंने सवाल और आपके जवाब को दोबारा जांच लिया और पाया कि मैंने समस्या को पूरी तरह गलत समझा है। आपका जवाब 100% सही है। बुरा न मानो। मेरी टिप्पणियों को कोई समझ नहीं आया इसलिए मैंने उन्हें हटा दिया। – vizog

4

उपयोग Joda-Time:

new org.joda.time.DateTime().minusDays(1).toDate(); 
+1

निश्चित रूप से, जोडा समय फिर से, लेकिन यदि वह एक लाइनर तक ही सीमित है, तो मुझे वास्तव में संदेह है कि वह तीसरे पक्ष के libs शामिल कर सकते हैं। –

2

आप

new Date(new Date().getTime() - 86400000); 

की तरह कुछ वर्तमान समय मिलता है, एक दिन में मिलीसेकंड का # घटाना, और एक निर्माण करने के लिए नहीं कर सकते उस से नई तारीख वस्तु?

+3

'नई तिथि()। GetTime() 'के बजाय' System.currentTimeMillis() 'के साथ काम करना चाहिए। –

+0

अच्छा बिंदु। वस्तुओं के # को कम करने के लिए बेहतर है। –

+2

तर्क गलत है, क्योंकि सभी दिनों में 86400000ms नहीं हैं। – jarnbjo

1

मान लें कि आप एक java.util.Date वस्तु चाहते हैं (के बाद से आप अपने प्रश्न में getTime() इस्तेमाल किया और कहा कि एक java.util.Date रिटर्न), तुम कर सकते हो:

// Get yesterday's date. System.currentTimeMillis() returns the 
// number of milliseconds between the epoch and today, and the 
// 86400000 is the number of milliseconds in a day. 
new Date(System.currentTimeMillis() - 86400000); 

ओह, महीने क्वेरी के अपने पहले दिन से पहले नहीं देखा था । util.Date का उपयोग करने के लिए मैं निम्नलिखित के साथ आया, लेकिन मुझे लगता है कि यह उस समय के बारे में है जब आप Joda या Calendar का उपयोग करने के लिए स्विच करना चाहते हैं ... (प्रिय एसओ, कृपया मुझे निम्नलिखित की भयावहता के लिए वोट न दें। ..)

// This will return the day of the week as an integer, 0 to 6. 
new Date(System.currentTimeMillis() - ((new Date().getDate()-1) * 86400000)).getDay(); 
0

यह किया जाना चाहिए:

वर्तमान महीने के पहले दिन के लिए, आप एक ऐसी ही चाल का उपयोग कर सकते

:

Calendar cal = Calendar.getInstance(); 
cal .add(Calendar.DAY_OF_MONTH,-1); 
cal .getTime(); 

जब आप यह कर रहे हैं

Calendar.getInstance().add(Calendar.DAY_OF_MONTH,-1).getTime() 

आप अनिवार्य रूप से एक विधि (add()) पूछ रहे हैं जोचलाने के लिए शून्य लौटाता है। वह काम नहीं कर सकता है।

// Today 
new java.util.Date().format('yyyy-MM-dd') 
// Yesterday 
new SimpleDateFormat("yyyy-MM-dd").format(new Date()-1) 

// First Day of current month 
new java.util.Date().format('yyyy') + "-" + new java.util.Date().format('MM') + "-01" 

मैं आईएसओ प्रारूप YYYY-MM-DD क्योंकि हर जगह मान्यता प्राप्त है का उपयोग करें और क्षेत्रीय प्रारूप भ्रम (तारीख मैदान पर dd/mm स्थिति) से बचने के लिए पसंद करते हैं:

0

यह है कि मैं क्या JasperReports में इस्तेमाल करते हैं।

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