2011-05-31 17 views
138

तो मैं रूप में एक इनकमिंग वस्तु से एक तिथि विशेषता पाने के लिए एक तिथि वस्तु परिवर्तित:एक कैलेंडर वस्तु

Tue May 24 05:05:16 EDT 2011 

मैं इसे एक कैलेंडर विधि कन्वर्ट करने के लिए एक सरल सहायक विधि लिख रहा हूँ, मैं उपयोग कर रहा था निम्नलिखित कोड:

private Date m_lastActivityDate = new Date(); 
:

public static Calendar DateToCalendar(Date date) 
{ 
Calendar cal = null; 
try { 
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); 
    date = (Date)formatter.parse(date.toString()); 
    cal=Calendar.getInstance(); 
    cal.setTime(date); 
    } 
    catch (ParseException e) 
    { 
     System.out.println("Exception :"+e); 
    } 
    return cal; 
} 

भेजे वस्तु मैं सिर्फ कोड के भीतर मान निर्दिष्ट कर रहा हूँ वर्तमान में उपयोग कर अनुकरण करने के लिए

हालांकि यह मेरे एक अशक्त सूचक दूँगा है एक बार विधि तक पहुँच जाता है:

public static Calendar toCalendar(Date date){ 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    return cal; 
} 

बाकी सब कुछ आप कर रहे हैं दोनों गलत और अनावश्यक है:

date = (Date)formatter.parse(date.toString()); 
+1

http://stackoverflow.com/questions/2727698/date-object-to-calendar-java की Dup – Vadzim

उत्तर

342

यहाँ अपने विधि है।

बीटीडब्ल्यू, जावा नामकरण सम्मेलन सुझाव देते हैं कि विधि नाम कम केस अक्षर से शुरू होते हैं, इसलिए यह होना चाहिए: dateToCalendar या toCalendar (दिखाया गया है)।


ठीक है, चलिए आपका कोड दूध दें, क्या हम?

DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); 
date = (Date)formatter.parse(date.toString()); 

DateFormat स्ट्रिंग्स (format()) के लिए तिथियां (parse()) या तिथियां को स्ट्रिंग्स कन्वर्ट करने के लिए प्रयोग किया जाता है। आप किसी तारीख की स्ट्रिंग प्रस्तुति को किसी तारीख को पार्स करने के लिए इसका उपयोग कर रहे हैं। यह सही नहीं हो सकता है, है ना?

+0

बहुत धन्यवाद आदमी का उपयोग करें। मुझे वास्तव में एक वेबसाइट का कोड मिला। उपर्युक्त विधि की शुद्धता को देखते हुए अब मैं अपनी intCoCalendar विधि को महसूस करना शुरू कर रहा हूं, मुझे कुछ हद तक 'सार्वजनिक स्थैतिक कैलेंडर intToCalendar (int i) {'कैलेंडर cal = null; कोशिश करें {स्ट्रिंग stringInt = String.valueOf (i); डेटफॉर्मेट फॉर्मेटर = नया सिंपलडेटफॉर्मैट ("yyyyMMdd"); दिनांक दिनांक = (तिथि) formatter.parse (stringInt); कैलोरी = Calendar.getInstance(); cal.setTime (तारीख); } पकड़ो (ParseException ई) {System.out.println ("अपवाद:" + ई); } वापसी कैल; } ' – Will

+1

@ एक ए) int का उपयोग न करें, लंबे समय तक उपयोग करें। Int स्टोर से अधिक मूल्यों को रख सकते हैं। बी) [नई तिथि (लंबी)] का उपयोग करें (http://download.oracle.com/javase/6/docs/api/java/util/Date.html#Date%28long%29) –

+1

ऐसा लगता है कि कोड मूल प्रश्न का उद्देश्य न केवल 'दिनांक' से' कैलेंडर' को परिवर्तित करना था, बल्कि एक ही समय में दिनांक से समय निकालना था। बाद में सही तरीके से कैसे किया जा सकता है [यहां] (http://stackoverflow.com/questions/5050170/java-getting-date-without-time)। '(दिनांक) formatter.parse (date.toString()) का उपयोग करने के बजाय;', 'formatter.parse (formatter।प्रारूप (दिनांक)); ' – Chris

-5

यह इतना आसान है ... एक तिथि परिवर्तित इस तरह कैलेंडर:

Calendar cal=Calendar.getInstance(); 
DateFormat format=new SimpleDateFormat("yyyy/mm/dd"); 
format.format(date); 
cal=format.getCalendar(); 
+3

दो साल पहले स्वीकृत समाधान यह करने का एक क्लीनर तरीका है। ध्यान दें कि इस कोड में छिपी धारणा है कि 'प्रारूप' से जुड़े कैलेंडर ऑब्जेक्ट वर्तमान में उस दिनांक को धारण कर रहा है जिसे हमने अभी स्वरूपित किया है, और यह कि किसी भी घंटे/मिनट/सेकंड वाले दिनांक के साथ प्रारूपण के दुष्प्रभाव के रूप में, आंतरिक तिथि भी कोई घंटे/मिनट/सेकंड नहीं है। शायद, लेकिन दस्तावेज व्यवहार नहीं। जो स्वीकार्य उत्तर करता है, वह करें जो सीधे कहता है कि हम क्या करने की कोशिश कर रहे हैं। यदि आप घंटे/मिनट/सेकंड को हटाना चाहते हैं, तो इसे कैसे करें इसके बारे में स्वीकृत उत्तर पर टिप्पणी देखें। – ToolmakerSteve

-8

यह फ़ंक्शन एक जावा तारीख वस्तु से एसक्यूएल तारीख वस्तु वापस आ जाएगी।

public java.sql.Date convertJavaDateToSQL(Date d) 
{ 

    java.sql.Date d1= new java.sql.Date(d.getTime()); 
    return d1; 
} 
+0

प्रश्न के पास 'java.sql.Date' से कोई लेना देना नहीं था। –

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