在java中获取当天时间,然后让这个当前时间加一个天数,得到最后的时间怎么计算。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中获取当天时间,然后让这个当前时间加一个天数,得到最后的时间怎么计算。相关的知识,希望对你有一定的参考价值。
利用Calendar类,新创建一个Calendar对象,就是当前时间,然后用add方法,添加一个DAY_OF_YEAR类型的1,就可以了。 参考技术A 使用 Calendar,处理很文件Calendar c=Calendar.getInstance();
c.setTime(new Date() );
c.add(Calendar.DAY_OF_MONTH, 1);
System.out.println( c.getTime());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如何在 Java 中获取当前工作目录?
【中文标题】如何在 Java 中获取当前工作目录?【英文标题】:How to get current working directory in Java? 【发布时间】:2011-03-10 08:40:27 【问题描述】:假设我的主要课程在C:\Users\Justian\Documents\
。如何让我的程序显示它在 C:\Users\Justian\Documents
中?
硬编码不是一个选项 - 如果它被移动到另一个位置,它需要适应。
我想将一堆 CSV 文件转储到一个文件夹中,让程序识别所有文件,然后加载数据并对其进行操作。我真的只是想知道如何导航到那个文件夹。
【问题讨论】:
看看this article。 如果你的主类在 jar 文件中怎么办?那你想要什么样的结果? 为什么你还需要这样做? 听起来你需要的是 CSV 文件所在的目录,并且 .jar 文件能够引用该目录,如果是这种情况,请参阅我的答案。 Getting the Current Working Directory in Java的可能重复 【参考方案1】:谁说你的主类在本地硬盘上的文件中?类通常捆绑在 JAR 文件中,有时通过网络加载,甚至动态生成。
那么你真正想做的是什么?可能有一种方法可以不对类的来源做出假设。
【讨论】:
我想将一堆 CSV 文件转储到一个文件夹中,让程序识别所有文件,然后加载数据并对其进行操作。我真的只想知道如何导航到那个文件夹。 也许我遗漏了一些东西,但似乎绝对路径可以工作。你说你不能硬编码,但你怎么知道从哪个文件夹开始? 嗯,问题是我想把它带到其他计算机上,而不仅仅是我自己的。我看不出对路径进行硬编码的效果如何。 “假设我的 jar 和文件夹总是有相似的关系(即在同一个目录中)。如果是这样,我可以获取 jar 的目录,然后修改它以找到文件夹。”如果我不必包含从硬盘驱动器到文件的完整路径,我可以对其进行硬编码的唯一方法。也许我可以只返回 3 个文件夹(即“Documents\Project\Dump\[file/folder]”) 我想说你想做的是获取 jar 文件所在目录的句柄。这能满足你的要求吗?【参考方案2】:使用CodeSource#getLocation()
。这在 JAR 文件中也可以正常工作。您可以通过ProtectionDomain#getCodeSource()
获得CodeSource
,而ProtectionDomain
又可以通过Class#getProtectionDomain()
获得。
public class Test
public static void main(String... args) throws Exception
URL location = Test.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println(location.getFile());
更新根据OP的评论:
我想将一堆 CSV 文件转储到一个文件夹中,让程序识别所有文件,然后加载数据并操作它们。我真的只想知道如何导航到那个文件夹。
这需要硬编码/知道它们在程序中的相对路径。而是考虑将其路径添加到类路径中,以便您可以使用ClassLoader#getResource()
File classpathRoot = new File(classLoader.getResource("").getPath());
File[] csvFiles = classpathRoot.listFiles(new FilenameFilter()
@Override public boolean accept(File dir, String name)
return name.endsWith(".csv");
);
或者将其路径作为main()
参数传递。
【讨论】:
+1。有几个条件可以使这项工作;最重要的是您的“主类”是从文件系统加载的。在 Java 中,这种假设是错误的并不罕见。但是,如果您确定您是从文件系统上的 JAR 加载您的类,那么这就是 有效的方法。 这完全取决于,真的。我正在尝试编译我的 JAR,但目前这是一个单独的问题。如果您认为可以提供帮助,请查看:***.com/questions/3152240/…。我确定发布此内容是某种违规行为,但它与此问题有关。如果我能解决这个问题,这肯定是我的答案。 为什么我需要硬编码?我以前做过类似的事情。假设我的 jar 和文件夹将始终具有相似的关系(即在同一目录中)。如果是这样,我可以得到jar的目录,然后修改它以找到文件夹。 如果它与 JAR 文件在同一个文件夹中,那么它已经在类路径中。 “硬编码”这个词有点夸张,其实我的意思是“知道它们相对于 JAR 文件的路径”。 @Moebius:嗯?您是 Java 新手吗? Check the javadoc。只需使用getLocation()
方法返回的那个。其他的显然行不通。【参考方案3】:
一种方法是使用system property System.getProperty("user.dir");
这将为您提供“初始化属性时的当前工作目录”。这可能就是你想要的。找出发出java
命令的位置,在您的情况下,在包含要处理的文件的目录中,即使实际的 .jar 文件可能位于机器上的其他位置。在大多数情况下,拥有实际 .jar 文件的目录并没有多大用处。
无论 .class 文件位于 .class 或 .jar 文件的哪个位置,以下内容都会打印出调用命令的当前目录。
public class Test
public static void main(final String[] args)
final String dir = System.getProperty("user.dir");
System.out.println("current dir = " + dir);
如果您在/User/me/
中并且包含上述代码的.jar 文件在/opt/some/nested/dir/
中
命令java -jar /opt/some/nested/dir/test.jar Test
将输出current dir = /User/me
。
您还应该考虑使用一个好的面向对象的命令行参数解析器。
我强烈推荐JSAP,Java 简单参数解析器。这将使您可以使用 System.getProperty("user.dir")
并传入其他内容来覆盖该行为。一个更易于维护的解决方案。这样可以很容易地传入要处理的目录,并且如果没有传入任何内容,就可以使用user.dir
。
【讨论】:
我会尽可能地对此进行测试。我真的全神贯注于 .jar 问题:P 您是否访问了我对那个 .jar 问题的回答中的链接,其中我展示了如何使用 ANT 构建 .jar 文件? Jarrod 的代码从系统属性user.dir
返回当前工作目录的绝对路径非常容易使用。 System.getProperty("user.dir");【参考方案4】:
File currentDirectory = new File(new File(".").getAbsolutePath());
System.out.println(currentDirectory.getCanonicalPath());
System.out.println(currentDirectory.getAbsolutePath());
打印类似:
/path/to/current/directory
/path/to/current/directory/.
请注意,File.getCanonicalPath()
会抛出一个检查过的 IOException,但它会删除诸如 ../../../
之类的东西
【讨论】:
【参考方案5】:this.getClass().getClassLoader().getResource("").getPath()
【讨论】:
请注意,这将返回到“bin/classes/”的路径,而不仅仅是“bin”。 使用 Intellij Idea 调试正在运行的应用程序时,返回“/C:/Program%20Files/Java/jdk1.8.0_112/:”【参考方案6】:如果要当前源码的绝对路径,我的建议是:
String internalPath = this.getClass().getName().replace(".", File.separator);
String externalPath = System.getProperty("user.dir")+File.separator+"src";
String workDir = externalPath+File.separator+internalPath.substring(0, internalPath.lastIndexOf(File.separator));
【讨论】:
当您在 IDE 上运行它或使用某些东西来旋转实例时,这不起作用。 内部路径是 java\lang\Class 外部路径是 E:\BranchProduction1.4.0\FilesTestProject\src 工作目录是 E:\BranchProduction1.4.0\FilesTestProject\src\java\lang 你能解释一下吗输出?【参考方案7】:我刚用过:
import java.nio.file.Path;
import java.nio.file.Paths;
...
Path workingDirectory=Paths.get(".").toAbsolutePath();
【讨论】:
你的不行,这是正确的Paths.get("").toAbsolutePath();
@ToKra 如果我这样做 Paths.get("my/file").toAbsolutePath()
我会得到 /my/file
,这绝对不是 cwd。
@abergmeier 我在字符串中写了 "" 而不是 "my/file"【参考方案8】:
如果要获取当前工作目录,请使用以下行
System.out.println(new File("").getAbsolutePath());
【讨论】:
以上是关于在java中获取当天时间,然后让这个当前时间加一个天数,得到最后的时间怎么计算。的主要内容,如果未能解决你的问题,请参考以下文章
java 获取本机当前时间并对小时任意加减,后判断新时间与当前时间的前后关系 求程序