我想采取像“星期二2月17日20:49:54 +0000 2007”这样的日期对象,并将年变量动态更改为当前年份“星期二2月17日20:49:54 +0000 2012“在java中这样做的最佳方式是什么?
答案 0 :(得分:4)
从日期构造日历,使用日历设置年份,然后从日历中返回Date对象。
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.YEAR, 2012);
date = c.getTime();
答案 1 :(得分:0)
如果那已经是日期对象,您可以这样做:
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对象: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html 并使用上面的日历对象。
答案 2 :(得分: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
}
答案 3 :(得分: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));
}
}