2013-08-02 63 views
0

我有一些代碼使用sql.date對象來獲取格式爲yyyy-MM-dd的當前日期。我想將它轉換爲與sql.date具有相同格式的Calendar對象。Typecast sql.date到日曆

下面是sql.date代碼:

java.util.Date now = new java.util.Date(); 

java.sql.Date sqlDate = new java.sql.Date(now.getTime()); 

編輯:

我想知道如何把這個在日曆對象。這甚至有可能嗎?

回答

3

A java.sql.Date不是格式。這只是一個約會。

要將其轉換爲字符串,請使用設置了相關格式的SimpleDateFormatter - 或者只使用toString,如果您確實需要yyyy-MM-dd。 (遺憾的是,目前還不清楚哪個時區,你應該使用 - 。java.sql.Date在這方面記錄非常糟糕,我懷疑它會使用默認的系統時區)

要創建具有給定日期Calendar對象,你可以只使用:

Calendar calendar = Calendar.getInstance(); 
calendar.setTime(sqlDate); 

再次,Calendar沒有一個文本格式或者 - 關於文本表示它代表的時間在特定的時間段點在一個特定的日曆系統,但什麼都沒有。

+0

這工作謝謝你。我不明白日期格式和日期是如何工作的。 –

1

的Java對象Date(並注意java.sql.Date一個java.util.Date)不具有 「格式」。他們代表瞬間即時。

Calendar也沒有「格式」。

你要求的東西在java中沒有意義。

考慮使用SimpleDateFormat格式化的這些東西一個爲String:

String str = new SimpleDateFormat("yyyy-MM-dd").format(myDate); 

,或者如果您使用的是Calendar對象(不推薦):

String str = new SimpleDateFormat("yyyy-MM-dd").format(myCalendar.getTime()); 
1

使用SimpleDateFormat#format()

System.out.println(new SimpleDateFormat("yyyy-MM-dd") 
        .format(Calendar.getInstance().getTime())); 
+0

所以我應該完全用日曆替換日期? –

+0

是的,不需要單獨構建'java.util.Date'。你可以從'Calendar#getTime()'得到它。 –

0

您可以使用以下snipp等。

public class DateTest { 

public static void main(String[] arg){ 

    Calendar calendar = Calendar.getInstance(); 
    //setting a valid date 
    Date date = new Date(113,07,10); 
    //prints the date as per format 
    System.out.println("Date in YYYY-MM-DD : " +date); 
    //sets the calendar with the date value in java.sql.Date instance 
    calendar.setTime(date); 
    //use simple date formatter to format the value in calendar instance 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    System.out.println("Date formatted from Calendar instance : "+dateFormat.format(calendar.getTime())); 
} 

}

請讓我知道會發生什麼!