【问题标题】:Schedule assignment, Java current time between to times that are parse from a schedule计划分配,从计划中解析的时间之间的 Java 当前时间
【发布时间】:2015-10-24 11:48:22
【问题描述】:

我是新来的,我已经有一个问题。

我正在为学校分配作业(在使用 Java 处理中),我们正在从 txt 文件加载日程安排。 我需要从中进行可视化,它进展顺利,但我被困在某一点上。

我想做一个if语句,看看当前时间是否在开始时间和结束时间之间。我确实从 txt 文件中解析了开始时间和结束时间,我可以调用当前时间。但我找不到或不知道 if 语句。有人可以帮忙吗?

我的部分代码(我无法显示所有内容,因为我有 6 个选项卡):

**//From the main tab**
int s = second();  // Values from 0 - 59
int mi = minute();  // Values from 0 - 59
int h = hour();    // Values from 0 - 23
int d = day();     // Values from 1 - 31
int mo = month();  // values from 1 - 12
int y = year();

// searching all data from Table, comparing location with roomsTTH, if its        the same check iff itint(random(20)), 20's free 
for (TableRow singleRow : tableRooster.rows()) {
ParseInfo parse = new ParseInfo(singleRow); 
for (Room roomToCheck : roomsTTH) {
  if (parse.location == roomToCheck.id) {
    if (roomToCheck.available) {

      if ( y == parseInt(parse.year)) {
        if (mo == parseInt(parse.month)) {
          if ( d == parseInt(parse.day)) {
           // if ( isBetween = currentTime.after(parse.startTime) && currantTime.before(parse.endTime)) {

            //  occupied = true; 
            //  Floor.maxRooms ++;
            }
          }
        }
      }
    }
  }
}
 // }

**//From tab Parse**
 //StartTime
 String startTime;


  //EndTime
  String endTime;


  TableRow myTableRow;

  ParseInfo(TableRow tableRow) {
    parseRow(tableRow);
  }
  // Parse data into variables
  void parseRow(TableRow row) {

// Divide the parse location to level and room
this.location = row.getString("Location");
this.level = this.location.substring(5, 6);
this.room = this.location.substring(8, 9);

// Divide the parse start date to year, month, day
this.date = row.getString("Start date");
this.day = this.date.substring(9, 10);
this.month = this.date.substring(6, 7);
this.year = this.date.substring(0, 3);

// Parse Start time & End time 
this.startTime = row.getString("Start time");
this.endTime = row.getString("End time");
  }
}

【问题讨论】:

    标签: java parsing if-statement time processing


    【解决方案1】:

    您的日期似乎存储为 String 值。字符串值没有彼此之前还是之后的概念,所以你必须自己做比较。你有两个选择:

    选项 1:按字母顺序比较 String 值。像这样的:

    String date1 = "2015/10/24";
    String date2 = "2015/10/25";
    if(date1.compareTo(date2) < 0){
       //date 1 is before date2
    }
    else if(date1.compareTo(date2) > 0){
       //date 1 is after date2
    }
    else{
       //they are the same date
    }
    

    选项 2:如果由于某种原因这不起作用(例如,如果日期格式不同),那么您可以使用 Java 的 SimpleDateFormat 类来解析日期 @987654326 @s 到 Date 对象中。像这样的:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    Date date1 = sdf.parse("2015/10/24");
    Date date2 = sdf.parse("2015/10/25");
    
    if(date1.before(date2)){
       //date 1 is before date2
    }
    else if(date1.after(date2)){
       //date 1 is after date2
    }
    else{
       //they are the same date
    }
    

    【讨论】:

    • 你是对的,我明白这一点。但我需要随着时间的推移做到这一点。有了日期,日期就可以正常工作了。我需要知道如何查看当前时间(15:48)是否在开始时间或结束时间之间的字符串类型(是的字符串,因为它来自 txt 文件,它是字符串)。
    • @Conijntjuh 这两个选项也适用于时间字符串。它们是一样的。
    猜你喜欢
    • 2016-06-20
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多