怀疑使用java获取昨天的日期

时间:2010-02-11 12:45:21

标签: java

我想用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

4 个答案:

答案 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。阅读文档,看看它如何处理夏令时等。