默认日期年份设置为1970年。

6

我需要解析一个没有年份的字符串,例如 "13 Aug 11:30"。

但是当我输出日期时,它会添加上年份。我尝试设置年份,但是年份完全错误,输出结果为 "Thu Aug 13 11:30:00 GMT 3911"。

在解析日期后是否有一种方法可以设置年份?

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM HH:mm");

String dateStr = "13 Aug 11:30";
Date fromDate = (Date)formatter.parse(dateStr);


fromDate.setYear(2011);

该标题似乎没有描述问题? - Savino Sguera
为什么不在解析之前将年份添加到字符串中呢? - user325117
@Martin 因为我正在从HTML标签中解析日期,而该标签没有年份。 - M_K
你是否想要输出当前年份?如果你不需要打印年份,你可以让它保持任何“不正确”的默认值,并修复你的输出格式以排除它。 - Stephen P
1
java.util.DatesetYear() 和许多其他方法被弃用并非没有原因。不要使用已弃用的方法。 - BalusC
3个回答

11

使用Calendar设置年份:

Calendar c = Calendar.getInstance();
c.setTime(fromDate);
c.set(Calendar.YEAR, 2011);
fromDate = c.getTime();

3

您是否阅读过setYear方法的API?

将此Date对象的年份设置为指定值加上1900年

2011 + 1900 = 3911


3
< p > java.util.Date 的文档非常清楚地说明,setYear() 方法会将传入的年份加上 1900。因此,您只需要从参数中减去 1900 即可。


小心闰年:1900年不是闰年,但2000年是。我同意您关于将年份添加到字符串的评论;对我来说,这似乎是最简单的方法。 - MRAB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接