【发布时间】:2011-11-21 06:14:19
【问题描述】:
我想用当前时间戳命名由我的 Java 应用程序创建的新文件。
我需要这方面的帮助。如何命名使用当前时间戳创建的新文件?我应该包括哪些课程?
【问题讨论】:
-
如果同时创建多个文件怎么办?这是XY problem? 你真的想做什么?
我想用当前时间戳命名由我的 Java 应用程序创建的新文件。
我需要这方面的帮助。如何命名使用当前时间戳创建的新文件?我应该包括哪些课程?
【问题讨论】:
Date、SimpleDateFormat 以及 I/O 方面所需的任何类(有很多可能性)。
【讨论】:
按照 aix 的建议使用 SimpleDateFormat 将当前时间格式化为字符串。
您应该使用不包含/ 字符等的格式。我建议使用类似yyyyMMddhhmm
【讨论】:
不用太复杂,试试这个:
String fileName = new SimpleDateFormat("yyyyMMddHHmm'.txt'").format(new Date());
【讨论】:
java.util.Date、java.util.Calendar 和 java.text.SimpleDateFormat 等存在严重缺陷的日期时间类现在是 legacy,被 Java 8 及更高版本中内置的 java.time 类所取代.
您可以通过以下方式获取附加文件扩展名的当前时间戳:
String fileName = new Date().getTime() + ".txt";
【讨论】:
试试这个
String fileSuffix = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
【讨论】:
你可以使用DateTime
import org.joda.time.DateTime
选项 1:yyyyMMddHHmmss
DateTime.now().toString("yyyyMMddHHmmss")
会给20190205214430
选项 2:yyyy-dd-M--HH-mm-ss
DateTime.now().toString("yyyy-dd-M--HH-mm-ss")
会给2019-05-2--21-43-32
【讨论】:
使用填充长度功能改进@Derek Springer 帖子:
public static String getFileWithDate(String fileName, String fileSaperator, String dateFormat) {
String FileNamePrefix = fileName.substring(0, fileName.lastIndexOf(fileSaperator));
String FileNameSuffix = fileName.substring(fileName.lastIndexOf(fileSaperator)+1, fileName.length());
//System.out.println("File= Prefix~Suffix:"+FileNamePrefix +"~"+FileNameSuffix);
String newFileName = new SimpleDateFormat("'"+FileNamePrefix+"_'"+dateFormat+"'"+fileSaperator+FileNameSuffix+"'").format(new Date());
System.out.println("New File:"+newFileName);
return newFileName;
}
使用函数及其输出:
String fileSaperator = ".", format = "yyyyMMMdd_HHmm";
getFileWithDate("Text1.txt", fileSaperator, format);
getFileWithDate("Text1.doc", fileSaperator, format);
getFileWithDate("Text1.txt.json", fileSaperator, format);
输出:
Old File:Text1.txt New File:Text1_2020Nov11_1807.txt
Old File:Text1.doc New File:Text1_2020Nov11_1807.doc
Old File:Text1.txt.json New File:Text1.txt_2020Nov11_1807.json
【讨论】:
您可以使用此选项
String fileName = new SimpleDateFormat("yyyyMMddHHmmss'.txt'", Locale.getDefault()).format(new Date());
【讨论】: