繁体   English   中英

我如何跟踪代码中发生某些事情的时间?

[英]How do i keep track of the time at which something happened in my code?

我正在制作一个读取用户输入的程序,允许他们查看我图书馆中可用的书籍(从 excel 表导入),选择一个项目并选择借用它,但问题是我想放借用和归还日期,我该怎么做? 例如:如果用户确认借书,操作发生后需要在excel表中添加借书日期,并附带一点请求; 如果有可能以某种方式忽略在循环数组中循环的 for 循环中的第一行并继续处理其他行,那么请也帮我解决这个问题(这个循环在代码的第 111 行,后面的那个到目前为止,“filteredBooks”列表是我的代码:`public class BookStudentMerge {

 public static List<Row> getStudentInfo(Sheet sheet, DataFormatter formatter, FormulaEvaluator evaluator, String searchValue) {
      List<Row> result = new ArrayList<Row>();
      String cellValue = "";
      String searchV = searchValue.toLowerCase();
      for (Row row : sheet) {
       for (Cell cell : row) {
        cellValue = formatter.formatCellValue(cell, evaluator);
        String cellV = cellValue.toLowerCase();
        if (cellV.contains(searchV)) {
         result.add(row);
         break;
        }
       }
      }
      return result;
     }
 public static List<Row> bookSearch(Sheet sheet, DataFormatter formatter, FormulaEvaluator evaluator, String searchValue) {
     List<Row> none = new ArrayList<Row>();
     String searchM = searchValue.toLowerCase(); 
     List<Row> result = new ArrayList<Row>();
      String cellValue = "";
      for (Row row : sheet) {
       for (Cell cell : row) {
        cellValue = formatter.formatCellValue(cell, evaluator);
        String cellM = cellValue.toLowerCase();
        if (cellM.contains(searchM)) {
            result.add(row);
         break;
        }
       }
      }
      return result;
 }
 public static boolean checkAvailability (Row r, DataFormatter formatter, FormulaEvaluator evaluator) {
     String cellValue = "";
     for (Cell c : r) {
         cellValue = formatter.formatCellValue(c, evaluator);
         String cellM = cellValue.toLowerCase();
         if (cellM.equalsIgnoreCase("Available")) {
             return true; 
     }
    }
     return false;
 }
 public static void changeStatus (Row r, DataFormatter formatter, FormulaEvaluator evaluator) {
     String cellValue = "";
     for (Cell c : r) {
         cellValue = formatter.formatCellValue(c, evaluator);
         String cellM = cellValue.toLowerCase();
     if (cellM.equalsIgnoreCase("Available")) {
         c.setCellValue("Unavailable");
     }
     else if (cellM.equalsIgnoreCase("Unavailable")) {
         c.setCellValue("Available"); 
     }
     }
 }

public static void main(String[] args) throws IOException, InvalidFormatException {





    Workbook Books = WorkbookFactory.create(new FileInputStream("C:\\Users\\abdul\\Desktop\\University Files\\Object-Oriented Programming\\Project files\\Book class\\Books & DDC.xlsx"));
    Sheet SB = Books.getSheetAt(0);
    Workbook Students = WorkbookFactory.create(new FileInputStream("C:\\Users\\abdul\\Desktop\\University Files\\Object-Oriented Programming\\Project files\\Book class\\StudentsInfo.xlsx"));
    Sheet SS = Students.getSheetAt(0);
    DataFormatter FB = new DataFormatter();
    FormulaEvaluator EB =  Books.getCreationHelper().createFormulaEvaluator();      
    DataFormatter FS = new DataFormatter();
    FormulaEvaluator ES =  Students.getCreationHelper().createFormulaEvaluator();
    Scanner s = new Scanner (System.in);




         System.out.println("Welcome to our BiblioTheque library program!");
         System.out.println("Enter a valid student ID number: ");
         String inp = s.nextLine();
          Row headers = SS.getRow(0);
          for (Cell HS : headers) {
              System.out.print(HS.getStringCellValue() + "\t\t  ");
          }
         System.out.println();
         List<Row> filteredStudents = getStudentInfo(SS, FS, ES, inp);
         for (Row row : filteredStudents) {
               for (Cell cell : row) {
                   System.out.print(FS.formatCellValue(cell, ES));
                   System.out.print("\t     ");
               }
               System.out.println();
         }
         System.out.println();
         System.out.println("Search for a book by title, author, DDC, or ISBN: ");
         System.out.println("enter the name, author, ddc, isbn of your book: ");
         String search = s.nextLine();
          List<Row> filteredBooks = bookSearch(SB, FB, EB, search);
          Row HB = SB.getRow(0);
          for (Cell CB : HB) {
              System.out.print(CB.getStringCellValue() + "\t\t\t");
          }
          System.out.println();
          for (Row row : filteredBooks) {
              for (Cell cell : row) {
            System.out.print(FB.formatCellValue(cell, EB));
            System.out.print("\t\t");
           }
              System.out.println();
          }
          if (filteredBooks.isEmpty()) {
              System.out.println("no results found for the entered keyword/number");
          }
          else {
              System.out.println("do you wish to borrow any of the displayed books?");
          }
          String ans = s.nextLine();
          if (ans.equalsIgnoreCase("yes")) {
              System.out.println("choose the desired book by typing the item's list number: ");
          }
          int borrow = s.nextInt() - 1;
          Row Result = filteredBooks.get(borrow);
          if (checkAvailability(Result, FB, EB)) {
              System.out.println("You are going to borrow the book " + Result.getCell(0) + ", please proceed to the help desk to complete the operation.");
              changeStatus(Result, FB, EB);
          }
}

}`

一种可能性是java.time.LocalDateTime

import java.time.LocalDateTime;    

public class Time {    
  public static void main(String[] args) {    
   LocalDateTime time = LocalDateTime.now();  
   System.out.println(time);  
  }    
}    

这将给出一个 output 像这样: 2020-05-30T13:29:14.566

如果要更改格式,则必须使用DateTimeFormatter

import java.time.LocalDateTime; 
import java.time.format.DateTimeFormatter;  

public class Time {    
  public static void main(String[] args) {    
   LocalDateTime time = LocalDateTime.now();

   DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
   String timeDate = time.format(formatter);
   System.out.println(timeDate);  
  }    
}      

这将给出一个 output 像30-05-2020 13:59:13

所以现在我们有了一个带有所需日期的String 我们现在只需将其写入 csv 文件(我的建议是使用 csv 而不是 excel 文件。)。 这个答案中提供了一个关于如何做到这一点的例子。 如果您真的想使用 excel,我建议您阅读这个问题及其答案。

更多信息可以在这里这里找到。

通过上面提供的信息和示例,您应该能够在代码中自己实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM