2014-06-18 3 views
0

현재 데이터를 디스크에 저장하는 앱을 만들고 있습니다. 파일의 파일 이름을 현재 날짜로 지정합니다. 이 목적으로 SimpleDateFormat을 사용해 보았지만 어떻게 문자열로 변환 할 수 있는지 알지 못합니다. 그 toString() 메소드가 Object로부터 오버라이드 (override)되고 있지 않기 때문에, 유효한 결과를 돌려받지 않습니다. 내가 문자열로 날짜/시간 형식을 나타냅니다 어떻게SimpleDateFormat을 파일 이름 문자열로 사용하기

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"); 
     } 
    } 
} 

답변

1

당신은 sdf.format(new Date())을 찾고 있습니다. A DateFormat은 날짜로 초기화되지 않으므로 format 메소드 (또는 parse으로 문자열)를 전달해야합니다.

+0

이 결과는 실제로 문자열이지만, 콜론 (:)을 형식에서 슬래시 (/)로 변경하십시오. 어떻게 방지 할 수 있습니까? – Aborted

+0

@Aborted 코드를 제공 할 수 있습니까? 이것은 아마도'DateFormat' 때문이 아닙니다. – sp00m

+0

물론입니다. 나는 그 질문에 바로 올릴 것이다. – Aborted

1

당신이

sdf.format(new Date()); 

이 작동해야한다!

+0

이것은 콜론을 슬래시로 변환합니다. 출력은 yyyy-MM-dd HH/mm/ss/SSS로 되돌아옵니다. 어떤 아이디어? – Aborted

+0

@Aborted NTFS 파일 시스템 (Windows와 같은)을 사용하는 경우 파일 이름에 콜론을 사용할 수 없습니다. 아마도 그 이유가 맞습니다. (내가 잘못 생각할 수도 있습니다) –

0

는 포맷 방식에 날짜를 통과

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

당신은 할 수 있습니다 :

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")); 

모두 Date()java.sql 패키지.

관련 문제