如何从图像文件中读取日期和时间
如何从图像文件(已创建)中精确地获取日期和时间作为yyyyy.MMMMM.dd GGG hh:mm aaa,这是我正在使用的代码。如何从图像文件中读取日期和时间
Path p = Paths.get("C:\\DowloadFolder\\2.png");
BasicFileAttributes view = Files.getFileAttributeView(p, BasicFileAttributeView.class).readAttributes();
System.out.println(view.creationTime()+" is the same as "+view.lastModifiedTime());
我试图用DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
,但不知道如何从图像文件获取日期和时间。
你的问题是混淆
你似乎在要求的日期时间创建一个文件时。但是你也可以在你的第一句话中提到一些日期格式。然后你特指图像文件,这意味着你想要以jpeg和其他一些图像格式嵌入元数据。
您的问题有它自己的答案
如果你想要的是一个文件的创建时间,在这个问题的示例代码已经有一个信息,一个java.nio.file.attribute.FileTime
对象。
这是我自己演示的一些示例代码。
Path p = Paths.get("/Volumes/Macintosh HD/Users/johndoe/text.txt");
BasicFileAttributes view = null;
try {
view = Files.getFileAttributeView(p, BasicFileAttributeView.class).readAttributes();
} catch (IOException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
// As of Java 7, the NIO package added yet another date-time class to the Java platform.
java.nio.file.attribute.FileTime fileTimeCreation = view.creationTime();
java.nio.file.attribute.FileTime fileTimeLastModified = view.lastModifiedTime();
那fileTimeCreation
对象有你的文件的创建日期时间信息。请阅读the doc关于如何使用它。
要与其他类一起使用,您可能希望转换为另一种类型的日期 - 时间对象。使用Joda-Time或Java 8中的新java.time.* package。避免旧的java.util.Date &日历类与Java捆绑在一起,因为它们非常麻烦。
不要忘了时区。通常更好地指定一个所需的时区,而不是依赖于默认值。
// Convert to Joda-Time.
DateTimeZone timeZone = DateTimeZone.forID("Europe/Paris");
org.joda.time.DateTime dateTime = new DateTime(fileTimeCreation.toMillis(), timeZone);
// Convert to java.time.* package in Java 8.
ZoneId zoneId = ZoneId.of("Europe/Paris");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(fileTimeCreation.toString()).withZoneSameInstant(zoneId);
// Convert to java.util.Date
// Caution: I do not recommend using java.util.Date & Calendar classes. But if you insist…
java.util.Date date = new java.util.Date(fileTimeCreation.toMillis());
转储到控制台...
System.out.println("fileTimeCreation: " + fileTimeCreation);
System.out.println("fileTimeLastModified: " + fileTimeLastModified);
System.out.println("Joda-Time dateTime: " + dateTime);
System.out.println("java.time zonedDateTime: " + zonedDateTime);
System.out.println("java.util.Date (with default time zone applied): " + date);
当运行...
fileTimeCreation: 2014-02-16T02:28:51Z
fileTimeLastModified: 2014-02-16T02:34:17Z
Joda-Time dateTime: 2014-02-16T03:28:51.000+01:00
java.time zonedDateTime: 2014-02-16T03:28:51+01:00[Europe/Paris]
java.util.Date (with default time zone applied): Sat Feb 15 18:28:51 PST 2014
错误对于混淆抱歉。谢谢你的回答。我认为我做错了 –
有一个库叫做metadata-extractor这个工作。
有什么方法不使用库? –
是的。制作你自己的图书馆。但是,你为什么要这样做*? – jpaugh
我已经导入jar文件,但它仍然有一个'元数据','ImageMetadataReader','目录' –
什么是你的问题?如何从嵌入在图像文件中的元数据中提取日期时间?如果是这样,为什么你发布这个代码从文件系统获取日期时间? –
我只想得到一个创建图像的日期时间。 –