2015-02-16 18 views
5

Tôi cần lưu trữ ngày hiện tại (năm, tháng, ngày) và thời gian (Giờ, phút, giây) thành tệp CSV và đọc chúng sau đó.Đọc và ghi ngày giờ vào tệp CSV

Để tạo ngày Tôi đã cố gắng sử dụng

Date date = new Date(); 

để xây dựng ngày hiện tại, nhưng khi tôi

date.toString(); 

nó mang lại cho tôi một chuỗi rất thanh lịch mô tả ngày và thời gian, mà dường như không thể lưu trữ vào tệp CSV và được đọc sau. Vì vậy, làm cách nào để ghi vào tệp CSV ở định dạng có thể đọc sau đó?

gợi ý Thêm vào đó, đọc các tập tin CSV, tôi đã tìm thấy như

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 
Date d = df.parse("17/02/2015 01:18:15"); 

Đây có phải là có thể, dựa trên định dạng của đầu ra trước đó? Và những ngoại lệ nào tôi phải bắt buộc với việc sử dụng này?

Đánh giá cao sự trợ giúp. Cảm ơn bạn

+0

Hầu hết tất cả các phương thức lớp [Ngày] (http://docs.oracle.com/javase/7/docs/api/java/util/Date.html) đều không còn được dùng cho [Lịch] (http: //docs.oracle.com/javase/7/docs/api/java/util/Calendar.html) hoặc [GregorianCalendar] (http://docs.oracle.com/javase/7/docs/api/java/util /GregorianCalendar.html) trong Java7. – adamdc78

+1

Không có định dạng ngày chuẩn cho tệp CSV, vì vậy bạn cần phải tìm ra (hoặc xác định) định dạng ngày nào được cho là được sử dụng cho trường hợp cụ thể của bạn và sử dụng nó. –

+0

(Vấn đề với 'Date.toString' là nó sẽ tạo ra một chuỗi như" Monday, Feb 16 2015 "và dấu phẩy được nhúng sẽ làm khó phân tích cú pháp CSV.) –

Trả lời

2

Để viết một ngày với một định dạng ngày:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 
Date date = new Date(); 
System.out.println(df.format(date)); 

Để phân tích một ngày, bạn sử dụng các định dạng tương tự:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 
Date date = df.parse("17/02/2015 01:18:15"); 

Tùy thuộc vào tình huống sử dụng của bạn, bạn cũng có thể tìm thấy nó đáng giá để đặt múi giờ một cách rõ ràng (ví dụ: UTC) để bạn nhận được kết quả tương tự bất kể múi giờ của giờ địa phương/giờ tiết kiệm ban ngày, v.v.

df.setTimeZone(TimeZone.getTimeZone("UTC")); 

Hoặc bạn có thể sử dụng cơ bản long (millis kể từ khi kỷ nguyên) rằng một ngày được xây dựng trên đầu trang của ...

Để viết:

Date date = new Date(); 
System.out.println(date.getTime()); 

Để đọc:

long dateValue = // As read from the file 
Date date = new Date(dateValue); 

Cá nhân, tôi sẽ sử dụng một số DateFormat, mặc dù nó tiết kiệm hơn và nhiều công việc hơn, vì nó sẽ làm cho nội dung tệp có thể đọc được.

Nếu bạn muốn trợ giúp về đọc/ghi tệp hoặc xử lý ngoại lệ, tôi khuyên bạn nên đặt các câu hỏi riêng.

+0

cảm ơn aetheria, bây giờ nó có ý nghĩa hơn nhiều – chris

1

Bạn có thể thử lưu trữ dữ liệu dưới dạng Unix Timestamp (chỉ đơn giản là số dài).

Read this question để tìm hiểu cách lấy dấu thời gian unix và this để tìm hiểu cách chuyển đổi lại thành đối tượng Ngày.