2013-01-03 12 views
6

का उपयोग कर अतीत में तिथि प्राप्त करें नीचे कोड है जो मैं 10 दिनों पहले अतीत की तारीख तक पहुंचने के लिए उपयोग कर रहा हूं। आउटपुट '20130103' है जो आज की तारीख है। मैं आज की तारीख कैसे लौटा सकता हूं - 10 दिन? मैं जावा डेट क्लास में निर्मित का उपयोग करने के लिए प्रतिबंधित हूं, इसलिए जोडा समय का उपयोग नहीं कर सकता।java.util.Date

package past.date; 

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class PastDate { 

    public static void main(String args[]){ 

     DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
     Date myDate = new Date(System.currentTimeMillis()); 
     Date oneDayBefore = new Date(myDate.getTime() - 10);  
     String dateStr = dateFormat.format(oneDayBefore);  
     System.out.println("result is "+dateStr); 

    } 

} 
+1

क्या आपने [javadocs] (http://docs.oracle.com/javase/7/docs/api/java/util/Date.html) देखा है? डेट कन्स्ट्रक्टर मिलीसेकंड में एक मान लेता है, दिन में मूल्य नहीं। इसके अलावा, टाइमज़ोन/डीएसटी मुद्दों को ध्यान में रखना, बल्कि 'कैलेंडर' देखें। – BalusC

+0

इस उत्तर को संशोधित करें: http://stackoverflow.com/questions/5894726/how-do-i-do-calendar-arithmetic-with-java-util-date – mcalex

+0

आपके प्रश्न का उत्तर नहीं देता है, लेकिन हो सकता है कि आप हो http://stackoverflow.com/questions/11727933/add-30-days-to-date-in-java?rq=1 में रुचि रखते हैं यह आपको बताता है कि दिनों में कैसे जुड़ना है, शायद आप इसे घटाने के लिए स्थानांतरित कर सकते हैं। – sircapsalot

उत्तर

12

आप कैलेंडर के तरीकों के साथ तारीख में हेरफेर कर सकते हैं।

  DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
      Date myDate = new Date(System.currentTimeMillis()); 
      System.out.println("result is "+ dateFormat.format(myDate)); 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(myDate); 
      cal.add(Calendar.DATE, -10); 
      System.out.println(dateFormat.format(cal.getTime())); 
2

वर्ग दिनांक समय में एक विशिष्ट तत्काल, मिलीसेकंड परिशुद्धता के साथ प्रतिनिधित्व करता है।

Date oneDayBefore = new Date(myDate.getTime() - 10); 

तो यहाँ आप केवल 10 मिलीसेकंड घटाना है, लेकिन आप के द्वारा यह गुणा करके 10 दिनों घटाना करने की जरूरत है 10 * 24 * 60 * 60 * 1000

5

इस लाइन

Date oneDayBefore = new Date(myDate.getTime() - 10);  

दिनांक 10 मिलीसेकंड वापस सेट करता है, 10 दिनों तक नहीं। सबसे आसान समाधान सिर्फ 10 दिनों में मिलीसेकेंड की संख्या घटाना होगा:

Date tenDaysBefore = new Date(myDate.getTime() - (10 * 24 * 60 * 60 * 1000));  
+1

यह थोड़ी डोडी है जो सीधे मिलीसेकंड के साथ काम कर रहा है - डेलाइट बचत द्वारा पूर्ववत हो जाएगा। कैलेंडर इनबिल्ट विधियों का उपयोग करने के लिए सेवर। –

3

Calendar.add(Calendar.DAY_OF_MONTH, -10) का उपयोग करें।

1
Date today = new Date(); 
Calendar cal = new GregorianCalendar(); 
cal.setTime(today); 
cal.add(Calendar.DAY_OF_MONTH, -30); 
Date today30 = cal.getTime(); 
System.out.println(today30); 
+0

हालांकि यह कोड पोस्टर के मुद्दे को हल कर सकता है, स्पष्टीकरण की कुछ पंक्तियां समाधान को समझने के लिए इस पोस्ट को पढ़ने वाले सभी की सहायता करेंगी। – Thom

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