如何检查字符串日期在今天?

时间:2019-12-07 18:32:53

标签: java android if-statement

2019-12-07 20:13:04

如果这个日期是今天,我需要我的可见性。

try {
        String dtStart = sales.getDate();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
        Date date = format.parse(dtStart);


        Calendar now = Calendar.getInstance();
        Date today = now.getTime();
        if (date == today){
            holder.delete.setVisibility(View.VISIBLE);
        }else {
            holder.delete.setVisibility(View.INVISIBLE);
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }

4 个答案:

答案 0 :(得分:2)

使用java-8日期时间API,首先您的格式化程序错误的月份应以大写字母MM表示,并使用DateTimeFormatter而不是旧式SimpleDateFormat

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

然后使用格式化程序将输入字符串解析为LocalDateTime

String date = "2019-12-07 20:13:04";

LocalDateTime dateTime = LocalDateTime.parse(date,formatter);

最后使用equals比较输入日期和当前日期,here是在android上获取java-8日期时间API的信息

dateTime.toLocalDate().equals(LocalDate.now());  //true

答案 1 :(得分:0)

如果您已经将日期字符串转换为日期,则可以将Date对象转换为Calendar对象,然后比较年,月和日。

示例实现:

private boolean isToday(Date date) {
        Calendar calendar = Calendar.getInstance();
        Calendar toCompare = Calendar.getInstance();
        toCompare.setTimeInMillis(date.getTime());

        return calendar.get(Calendar.YEAR) == toCompare.get(Calendar.YEAR)
            && calendar.get(Calendar.MONTH) == toCompare.get(Calendar.MONTH)
            && calendar.get(Calendar.DAY_OF_MONTH) == toCompare.get(Calendar.DAY_OF_MONTH);
    }

或者,您可以将DateCalendar转换为毫秒,并与今天的毫秒进行比较。

示例实现:

private boolean isToday2(Date dateToCheck) {
        Calendar calendar = Calendar.getInstance();

        // you have to set calendar object to 00:00:00
        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        // milliseconds of 1 day = 86400000
        return dateToCheck.getTime() - calendar.getTimeInMillis() < 86400000; 
    }

这两个解决方案不能正确处理本地化时间。因此,请谨慎使用。

答案 2 :(得分:0)

您可以使用DateUtils.isToday方法来检查日期是否是今天:

try {
    String dtStart = sales.getDate();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
    Date date = format.parse(dtStart);

    boolean isToday = DateUtils.isToday(date.getTime());
    if (isToday){
        holder.delete.setVisibility(View.VISIBLE);
    }else {
        holder.delete.setVisibility(View.INVISIBLE);
    }
} catch (ParseException e) {
    e.printStackTrace();
}

答案 3 :(得分:0)

我们可以如下使用Java 8 Date-Time API:

    LocalDate dt2= LocalDate.of(2019,10,20);

    String dtStart= dt2.format(DateTimeFormatter.ISO_DATE);

    LocalDate currentDt= LocalDate.now();

    if(currentDt.format(DateTimeFormatter.ISO_DATE).equals(dtStart)) {
        // logic here 
    }else {
        //logic here
    }