如何在Java中验证日期?

时间:2015-04-10 07:40:20

标签: java date simpledateformat

我有这种格式的日期 -

2015-4-10T11:20:56

我需要验证日期并确保日期不大于当前日期。意思是如果今天是4月10日,那么它不应该是4月11日或更高。

String abc = "2015-4-10T11:20:56";

if(abc is greater than todays date) {
    // log an error
}

我该怎么做?

更新: -

我尝试过这样的解析,但它没有用 -

    String abc = "2015-4-10T11:20:56";
    SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
    try {
        format.parse(abc);
    } catch (ParseException e) {
        e.printStackTrace();
    }

3 个答案:

答案 0 :(得分:1)

您可以使用compareTo

尝试这样做
Date date = null;
String str = "2015-4-10T11:20:56";
try {
    DateFormat f = new SimpleDateFormat("yyyy-M-d'T'HH:mm:ss");
    f.setLenient(false);
    date = f.parse(str);
    if (date.compareTo(new Date()) > 0) {
      // your code
     }
} catch (ParseException e) { 
    e.printStackTrace();
}

答案 1 :(得分:1)

您必须将字符串转换为日期对象。 您可以使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d'T'HH:mm:ss");
Date date = sdf.parse(dateStr);
if (date.compareTo(new Date()) > 0) {
    // log an error    
}

答案 2 :(得分:1)

这应该适合你:

    String abc = "2015-4-10T11:20:56";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
    Date  mydate = df.parse(abc);

    Calendar c = Calendar.getInstance();
    c.setTime(mydate);
    Calendar today = Calendar.getInstance();
    if (c.compareTo(today)>=0){

    }