我想用java获取昨天的日期。我使用了以下代码,但每次都给出不同的日期,请检查代码是否必须在任何地方更改。提前谢谢。
SimpleDateFormat formatter=
new SimpleDateFormat("yyyy-mm-dd ");
Calendar currentDate = Calendar.getInstance();
String previous = formatter.format(currentDate.getTime())+ "00:00:00.000000000";
System.out.println("previous ="+previous);
currentDate.add(Calendar.DATE, -1);
String previousDate = formatter.format(currentDate.getTime())+ "00:00:00.000000000";
Timestamp updateTimestamp = Timestamp.valueOf(previousDate);
System.out.println("Update date ="+updateTimestamp);
这是我最后一次跑时得到的输出
上一个= 2010-15-11 00:00:00.000000000
更新日期= 2011-03-10 00:00:00.0
答案 0 :(得分:15)
问题是你正在使用'yyyy-mm-dd'来拉动年度分钟日。而是使用'yyyy-MM-dd'。
答案 1 :(得分:10)
你在模式中使用了mm,所以你使用分钟而不是几个月。
如果您想使用更简单的日期框架Joda Time,您可以执行以下操作:
DateTimeFormat format = DateTimeFormat.forPattern("yyyy-MM-dd 00:00:00.000000000");
DateTime now = new DateTime();
System.out.println("Previous :" + format.print(now);
DateTime oneDayAgo = now.minusDays(1);
System.out.println("Updated :" + format.print(oneDayAgo);
答案 2 :(得分:6)
您的日期格式模式字符串错误。 “mm”是分钟,“MM”是几个月。你可以通过查看看起来像“2010-52-11 ...”的中间结果轻松解决这个问题。
答案 3 :(得分:2)
Calendar cal = Calendar.getInstance();
cal.roll(Calendar.DATE, false); //you can also use add(int, int)
System.out.println(cal.toString());
所有标准Java自1.1以来。如果需要,还可以查看GregorianCalendar。阅读文档,看看它如何处理夏令时等。