개체에서 필드를 String
으로 읽은 다음 SimpleDateFormat
을 사용하여 문자열을 구문 분석 할 수 있습니다. 몇 가지주의 할
![Scanned Date output](https://i.stack.imgur.com/koYVg.png)
:
- 나는 간단한
String
입력을 사용하여 Scanner
객체를 생성 한 출력은 BlueJ의 터미널 창에서 보이는 방법은 다음과 import java.util.Date;
import java.util.Scanner;
import java.util.TimeZone;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class DataReader
{
private Date startDate;
// format to match Fri Jan 04 00:00:00 GMT 2013
private SimpleDateFormat inDateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
private SimpleDateFormat outDateFormat = new SimpleDateFormat("EEE yyyy-MMM-dd hh:mm:ss z");
public DataReader() {
outDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
}
public String formatStartDate() {
return outDateFormat.format(this.startDate);
}
public void readData(Scanner scanner) {
String token1 = scanner.next();
String token2 = scanner.next();
String token3 = scanner.next();
String dateToken = scanner.next();
String token5 = scanner.next();
System.out.println("Scanned Date Token: " + dateToken);
try {
startDate = inDateFormat.parse(dateToken);
}
catch (ParseException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
String data = "000005, TF-68670, AB-312172, Fri Jan 04 00:00:00 GMT 2013, 2";
Scanner scanner = new Scanner(data);
scanner.useDelimiter(", ");
DataReader dr = new DataReader();
dr.readData(scanner);
System.out.println("Start Date: " + dr.formatStartDate());
}
}
입니다 main 메소드에서. 코드는 다른 소스에서 입력을 받아야합니다.
- 는 I 입력을 해석 및 출력 포맷에 다른 오브젝트를 사용
SimpleDateFormat
. 이것은 차이점을 볼 수 있었고 Java의 단순한 Date
객체가 시간대를 저장하지 않기 때문입니다. 출력 형식을 지정하는 데 사용되는 SimpleDateFormat
에 명시 적으로 시간대를 설정해야합니다 (클래스 생성자 참조).
* 입력 * 모양은 무엇입니까? 이 파일이 있다고 가정하면, 파일은 어떻게 생겼을까요? 잠재 된 표현은 다양합니다. –
000005, TF-68670, AB-312172, Fri Jan 04 00:00:00 GMT 2013, 2 –
그건 구문 분석하기에는 정말 못생긴 형식이다. (그래도 여전히 가능하다. 토큰 separator로서 사용해, SimpleDateFormat를 사용해 해석합니다. –