2012-01-01 93 views
0

我想採用日期對象,如「Sat Feb 17 20:49:54 +0000 2007」,並將年份變量動態更改爲當前年份,例如「Sat Feb 17 20:49:54 +0000 2012「在java中這樣做的最好方法是什麼?如何操作java中的Date對象

回答

0

如果這已經是一個約會對象,你可以這樣做: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html 而:

Calendar cal = Calendar.getInstance(); 
int currentYear = cal.get(Calendar.YEAR); 
cal.setTime(dateObj); 
//set the year to current year 
cal.set(Calendar.YEAR, currentYear); 
//new date object with current year 
dateObj = cal.getTime(); 

如果這是一個字符串,可以先用SimpleDateFormat的解析字符串到Java Date對象使用上面的日曆對象。

+0

感謝您的幫助非常完美! – 2012-01-02 02:28:31

4

從日期構建日曆,使用日曆設置年份,然後從日曆中取回日期對象。

Calendar c = Calendar.getInstance(); 
c.setTime(date); 
c.set(Calendar.YEAR, 2012); 
date = c.getTime(); 
0

基於你問什麼,你這是怎麼做到這一點:

try { 
    DateFormat dateFormat = new SimpleDateFormat("E, dd MMM HH:mm:ss Z yyyy"); 
    date = (Date) dateFormat.parse("Sat, Feb 17 20:49:54 +0000 2007"); 
    Calendar cal = dateFormat.getCalendar(); 
    cal.set(Calendar.YEAR, 2012); 
} catch (ParseException pe) { 
    //ParseException Handling 
} catch(Exception e) { 
    //Exception Handling 
} 
0

另一種選擇是利用JodaTime API

import org.joda.time.DateTime; 
import org.joda.time.MutableDateTime; 
import org.joda.time.format.DateTimeFormat; 
import org.joda.time.format.DateTimeFormatter; 

public class App 
{ 
    public static void main(String[] args) 
    { 
     //Sat Feb 17 20:49:54 +0000 2007 
     DateTimeFormatter fmt = DateTimeFormat.forPattern("EEE MMM dd H:m:s Z yyyy"); 
     DateTime dt = fmt.parseDateTime("Sat Feb 17 20:49:54 +0000 2007"); 
     MutableDateTime mdt = dt.toMutableDateTime(); 
     mdt.setYear(new DateTime().getYear()); 

     System.out.println(fmt.print(mdt)); 
    } 
}