java - 我有一个Date()。我怎么知道它是否在HH:MM之后?

时间:2011-05-22 12:01:39

标签: java

  

可能重复:
  How do I compare a raw time in Java to now?
  How do I compare a raw time in Java?

哪一天无关紧要 我必须知道目前是在上午10点之后还是之前。

3 个答案:

答案 0 :(得分:4)

您可以使用:

Date yourDate = new Date();

GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(yourDate);
boolean before10AM = calendar.get(Calendar.HOUR_OF_DAY) < 10;

查看Calendar的文档,了解更多可以使用它的内容(例如,您可以查看您的日期是否是星期五)。

在JDK的早期版本中,您可以使用Date.getHours(),但现在不赞成使用Calendar类。

答案 1 :(得分:3)

你走了:

    Date date = new Date();
    int hours = date.getHours();

    if ( hours < 10) {
        System.out.println("before 10 am");
    } else {
        System.out.println("after 10 am");
    }

    // if deprecated methods are an issue then
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    int calHours = cal.get(Calendar.HOUR_OF_DAY);
    if ( calHours < 10) {
        System.out.println("before 10 am");
    } else {
        System.out.println("after 10 am");
    }

使用joda-time库可以更加干净地完成整个过程。

答案 2 :(得分:1)

Calendar calendar = new GregorianCalendar();
    calendar.setTime(yourDate);

    Calendar calendar1 = new GregorianCalendar();
    calendar1.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
    calendar1.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
    calendar1.set(Calendar.DATE, calendar.get(Calendar.DATE));
    calendar1.set(Calendar.HOUR_OF_DAY, YOUR_HOUR);
    calendar1.set(Calendar.MINUTE, YOUR_MINUTE);
    calendar1.set(Calendar.SECOND, 0);
    calendar1.set(Calendar.MILLISECOND, 0);

    Date date = calendar1.getTime();

    if (yourDate.after(date)) {
      System.out.println("After");
    }