繁体   English   中英

使用SimpleDateFormat作为文件名的字符串

[英]Using SimpleDateFormat as a String for filenames

我目前正在创建一个将数据保存到磁盘的应用程序。 我希望文件的文件名是当前日期。 我为此目的尝试使用SimpleDateFormat ,但我不知道如何将其转换为字符串。 它的toString()方法未从Object覆盖,因此我没有得到有效的结果。

这是代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
...
ImageIO.write(capture, "png", new File(sdf.toString() + ".png"));

如何将日期/时间格式表示为字符串?

完整的代码:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.imageio.ImageIO;

public class Screenshot {

    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

    public static void fullScreenshot() {
        Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

        try {
            BufferedImage capture = new Robot().createScreenCapture(screenRect);
            ImageIO.write(capture, "png", new File(sdf.format(new Date()) + ".png"));
        } catch (IOException e) {
            System.err.println("Thrown exception at IO file save");
        } catch (AWTException e) {
            System.err.println("Insufficient permissions or explosion while screenshoting");
        }
    }
}

你应该做

sdf.format( new Date() );

这将起作用!

您正在寻找sdf.format(new Date()) DateFormat不会用任何日期初始化,您必须将日期传递给它的format方法(或将一个字符串传递给它的parse )。

仅通过格式上的日期

sdf.format(new Date().getTime())

你可以做 :

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
sdf.format(new Date().getTime());

要么

String fName = String.valueOf(new Timestamp(new Date().getTime())); // it ll give you current timestamp

ImageIO.write(capture, "png", new File(fName + ".png"));

要么

ImageIO.write(capture, "png", new File("Name" + fName + ".png"));

在这两种情况下,都是java.sql包中的Date()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM