【发布时间】:2023-04-07 05:29:01
【问题描述】:
我试图找出两个日期之间的差异,我做了以下事情:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD");
String accessioned = "2017-04-27";
System.out.println(date);
try {
date = format.parse(accessioned);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);
Date now = new Date();
long diff = now.getTime() - date.getTime();
System.out.println(diff);
if ((diff / (1000 * 60 * 60 * 24)) >= 30) {
System.out.println("haha");
}
}
}
这是我得到的输出:
Fri Jul 21 14:23:59 CEST 2017
Fri Jan 27 00:00:00 CET 2017
15168239705
haha
问题是,如果我将加入的字符串更改为“2017-04-28”,则日期会相应更改,年份相同,但无论我为月份设置什么值,它总是输出一月。例如,在我的代码中应该是四月,但输出显示的是一月。
我做错了什么?
【问题讨论】:
-
检查javadoc for
SimpleDateFormat:大写的D是一年中的一天,但是你需要的是一个月中的一天,它由小写d -
在询问之前您搜索了多少?看起来你有几个有效的答案,这很好,当然,我只是想你可能通过搜索引擎更快地得到你的答案。与此类似的问题和答案有很多。