[英]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.