2012-02-02 24 views
19

मैंने सोचा कि मैं GregorianCalendar बनाने में सक्षम हूं जो वर्ष, महीने और दिन लेता है, लेकिन मैं विश्वसनीय रूप से उन क्षेत्रों को java.sql.Date कक्षा के उदाहरण से प्राप्त नहीं कर सकता। तरीकों कि java.sql.Date से उन मूल्यों को प्राप्त पदावनत कर रहे हैं, और निम्न कोड कारण है कि वे नहीं किया जा सकता पता चलता है:मैं java.sql.Date ऑब्जेक्ट को ग्रेगोरियन कैलेंडर में कैसे परिवर्तित करूं?

import java.sql.Date; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class DateTester { 

    public static void main(String[] args) { 
     Date date = Date.valueOf("2011-12-25"); 
     System.out.println("Year: " + date.getYear()); 
     System.out.println("Month: " + date.getMonth()); 
     System.out.println("Day: " + date.getDate()); 
     System.out.println(date); 

     Calendar cal = new GregorianCalendar(date.getYear(), date.getMonth(), date.getDate()); 
     System.out.println(cal.getTime()); 
    } 
} 

यहाँ उत्पादन है, दिखा रहा है कि महीने और वर्ष पदावनत getYear() और से सही ढंग से वापस नहीं कर रहे हैं Date की getMonth() तरीके:

वर्ष: 111
महीना: 11
दिन: 25
2011-12-25
गुरु दिसंबर 25 00:00:00 ईएसटी 111

जब से मैं निर्माता कि मैं ऊपर की कोशिश की उपयोग नहीं कर सकते हैं, और कोई GregorianCalendar निर्माता, कि सिर्फ एक Date लेता है कैसे मैं एक में एक java.sql.Date वस्तु कनवर्ट करने का GregorianCalendar?

उत्तर

32

आपको इसे दो चरणों में करना है। पहले डिफॉल्ट कन्स्ट्रक्टर का उपयोग करके GregorianCalendar बनाएं, फिर दिनांक (भ्रामक नामित) setTime विधि का उपयोग करके दिनांक सेट करें।

import java.sql.Date; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class DateTester { 

    public static void main(String[] args) { 
     Date date = Date.valueOf("2011-12-25"); 
     System.out.println(date); 

     Calendar cal = new GregorianCalendar(); 
     cal.setTime(date); 
     System.out.println(cal.getTime()); 
    } 
} 

यहाँ उत्पादन है:

2011-12-25
सूर्य दिसंबर 25 00:00:00 ईएसटी 2011

3

मैं स्मृति से जा रहा हूँ, लेकिन तुम हो

Calendar cal = GregorianCalendar.getInstance(); 
cal.setTime(rs.getDate()); 
+1

जहां से rs.getDate() से आया था? –

+1

क्षमा करें - आरएस वेरिएबल नाम है जो मैं हमेशा ऑब्जेक्ट्स को परिणाम देता हूं - यह सिर्फ java.sql.Date उदाहरण का प्रतिनिधित्व करने के लिए है जिसे आपने पहले से ही चालू कर दिया है। – DaveH

+0

वास्तव में सबसे विशिष्ट उत्तर नहीं है, लेकिन कुछ मानकों का पालन करने के लिए +1 है जो इसे सटीक कोड बनाता है जिसे मैं ढूंढ रहा था। – KjetilNordin

4

इसे आजमाएं।

import java.sql.Date; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class DateTester { 

    public static void main(String[] args) { 
     Date date = Date.valueOf("2011-12-25"); 
     System.out.println(date); 

     Calendar cal = new GregorianCalendar(); 
     cal.setTime(date); 
     System.out.println(cal.getTime()); 
    } 
} 
1

उपयोग setTimeInMillis():

java.sql.Date date = new java.sql.Date(System.currentTimeMillis()); 
Calendar cal = new GregorianCalendar(); 
cal.setTimeInMillis(date.getTime()); 

मुझे लगता है कि यह सबसे आसान तरीका है।

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