java - 如何在特定日期之前到达

标签 java date calendar

我想减少特定日期的一天。但减少了1个月。

df = new SimpleDateFormat("EEEE, dd MMMM YYYY"); 
Date prevDate = df.parse(dateText.getText().toString()); 
Calendar c = Calendar.getInstance(); 
c.setTime(prevDate); 
c.add(Calendar.DATE, -1); 
Date d=c.getTime(); 
dateText.setText(df.format(d));

最佳答案

java.time.LocalDate

您可以使用LocalDate如下,

        String dateText="Mon, 14 May 2018";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMMM yyyy", Locale.ENGLISH);
        LocalDate localDate = LocalDate.parse(dateText, formatter);
        localDate = localDate.minusDays(1);

最好避免 Date 类。但如果你必须的话,你可以转换。

Date oneDayBefore = 
    Date.from(                       // New conversion method added to the old class.
        localDate
        .atStartOfDay(               // Determine the first moment of the day as seen in that time zone. Not always 00:00.
            ZoneId.systemDefault()
        )                            // Returns another `LocalDate` object.
        .toInstant()                 // Returns a `Instant`.
    )
;                                    // Only if you *really* need java.util.Date object.

打印结果。

        System.out.println(oneDayBefore);
        String dateTextOneDayBefore = formatter.format(localDate);//Format to similar to input 'dateText'
        System.out.println(dateTextOneDayBefore);

关于java - 如何在特定日期之前到达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60108007/

相关文章:

swift - 用 flatMap 展开

swift - 获取一天中的所有时间(以日期格式)从上午 9 点到晚上 11 点,并保存在 Swift 的数组中

java - 将 2 月 28 日加 1 个月,结果应为 3 月 31 日

java - 如何使用 selenium 选择不包含特定类的元素

javascript if if else 逻辑

java - 有没有办法在构造后确定 DateTimeFormatter 是仅日期还是仅时间?

java - 使 SimpleDateFormat.parse() 在无效日期上失败(例如,月份大于 12)

java - Libgdx 混合两个蒙版?

java - 寻找 GSM/CDMA 通话详细记录结构

java - 无法压缩发送到 JSP 的 Java 服务器响应