gpt4 book ai didi

java - 转换最后修改日期时出错

转载 作者:行者123 更新时间:2023-11-29 04:32:23 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序可以判断文件的最后修改日期是否在日期 From 和日期 To 的范围内,如果在该范围内,它将复制,但我遇到了错误

      File src = new File(sourcefile + File.separator + strErrorFile[i]);
if(sourcefile.isDirectory())
{
ArrayList<Integer> alDateList = date(strList1);
int intDateFrom1 = alDateList.get(0);
int intDateTo1 = alDateList.get(1);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
System.out.println("After Format : " + sdf.format(src.lastModified()));
try
{
lastDate = Integer.parseInt(sdf.format(src.lastModified())); //line 362
} catch (NumberFormatException e) {
e.printStackTrace();
}
if(intDateFrom1 <= lastDate && intDateTo1 >= lastDate)
{
//copy
}
}

错误

java.lang.NumberFormatException: For input string: "09/10/2015"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.eclipse.wb.swt.FortryApplication$4.widgetSelected(FortryApplication.java:362)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.wb.swt.FortryApplication.open(FortryApplication.java:56)
at org.eclipse.wb.swt.FortryApplication.main(FortryApplication.java:610)

最佳答案

您需要退后一步,看看您需要什么以及您拥有什么。

您不想将 lastModified 值转换为 String(通过 DateFormatter),因为它不会给您任何真正的值(value),而不是当你认为有一个完整的 API 专门用于处理日期/时间时

让我们先看看 File#lastModified

JavaDocs 声明它返回:

A long value representing the time the file was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), or 0L if the file does not exist or if an I/O error occurs

好吧,这其实很好,因为你可以使用这个值来生成一个LocalDateTime对象...

LocalDateTime ldt = LocalDateTime.ofInstant(new Date(src.lastModified()).toInstant(), ZoneId.systemDefault());

你为什么要这样做?因为 LocalDateTime 具有可以轻松与其他 LocalDateTime 对象进行比较的方法...

    LocalDateTime from = ...;
LocalDateTime to = ...;

if (ldt.isAfter(from) && ldt.isBefore(to)) {
//between...
}

您还可以使用 LocalDateTime#equals 来比较两个日期是否相等。

如果您不需要“时间”组件,您可以使用LocalDateTime#toLocalDate 来获取基于日期(不带时间)的对象,但是比较过程基本相同

你可以看看this answer其中包含用于确定日期/时间值是否介于两个给定日期/时间值之间的总体逻辑

关于java - 转换最后修改日期时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43335945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com