【问题标题】:How to set a Java Date object's value to yesterday? [duplicate]如何将 Java Date 对象的值设置为昨天? [复制]
【发布时间】:2012-08-15 08:11:43
【问题描述】:

可能重复:
Get yesterday's date using Date

将 Java Date 对象的值设置为昨天的优雅方法是什么?

【问题讨论】:

标签: java


【解决方案1】:

你的意思是回到 24 小时前吗?

 Date date = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000L);

或在同一时间返回某一天(这可以是 23 或 25 小时,具体取决于夏令时)

 Calendar cal = Calendar.getInstance();
 cal.add(Calendar.DATE, -1); 

由于夏令时,这些并不完全相同。

【讨论】:

    【解决方案2】:

    JodaTime

      LocalDate today = LocalDate.now();
        LocalDate yesterday = today.minus(Period.days(1));
    
        System.out.printf("Today is : %s, Yesterday : %s", today.toString("yyyy-MM-dd"), yesterday.toString("yyyy-MM-dd"));
    

    【讨论】:

    • +1 用于使用 JodaTime 而不是 Date。
    • Java 8 LocalDate 非常相似:LocalDate.now().minusDays( 1 )
    【解决方案3】:

    Date 转换为Calendar 对象并将其“回滚”一天。类似这个辅助方法的东西取自here:

    public static void addDays(Date d, int days)
    {
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        c.add(Calendar.DATE, days);
        d.setTime(c.getTime().getTime());
    }
    

    对于您的具体情况,只需将days 传递为-1 即可。如果进行大量的特定日期操作,请确保您考虑到时区/语言环境。

    【讨论】:

      【解决方案4】:
      you can try the follwing code:
      Calendar cal = Calendar.getInstance();
      DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
      System.out.println("Today's date is "+dateFormat.format(cal.getTime()));
      
      cal.add(Calendar.DATE, -1);
      System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime())); 
      

      【讨论】:

      • 这看起来类似于@UVM 的答案。你可以尝试添加一些他的答案没有的东西吗?
      • @PeterLawrey 我测试过,效果很好
      • 我知道它很好,只是它和之前的帖子差不多。
      【解决方案5】:

      正如许多人已经说过的那样,使用日历而不是日期。

      如果你发现你真的想使用日期:

      Calendar cal = Calendar.getInstance();
      cal.add(Calendar.HOUR, -24);
      cal.getTime();//returns a Date object
      
      Calendar cal1 = Calendar.getInstance();
      cal1.add(Calendar.DAY_OF_MONTH, -1);
      cal1.getTime();//returns a Date object
      

      我希望这会有所帮助。 tomred

      【讨论】:

        【解决方案6】:

        您可以尝试以下示例将其设置为上一个日期。

        Calendar cal = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        System.out.println("Today's date is " +dateFormat.format(cal.getTime()));    
        cal.add(Calendar.DATE, -1);  
        System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime()));
        

        【讨论】:

        • 这看起来很复杂。你能简化这个例子吗?
        • @PeterLawrey,我刚刚做得更简单了。
        猜你喜欢
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-30
        • 1970-01-01
        • 2012-07-10
        • 1970-01-01
        相关资源
        最近更新 更多