2012-01-01 91 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)); 
    } 
}