Cách tốt nhất để phân tích cú pháp ngày trong Java là gì? Có cách nào được xây dựng để phân tích cú pháp các chuỗi như "18 tháng 7 năm 2011", "ngày 18 tháng 7 năm 2011", "18-07-2011", "2011-07-18" mà không biết định dạng trước không?Cách chung để phân tích các ngày trong Java
Trả lời
Nếu bạn đã quen thuộc với các Simpledateformat bạn chỉ có thể thêm một vài dateformatter trong một danh sách/mảng và làm tất cả sau khi khác cho đến khi một truy cập một ngày hợp lệ.
Vấn đề ở đây là: Bạn sẽ làm gì với một ngày như
06-07-2011
Có 06 Tháng bảy hoặc là nó ngày 07 tháng sáu?
Nhưng để trả lời câu hỏi: không có "cách tổng quát được xây dựng"
Bạn thực sự không thể làm điều đó. Xem xét "10-12-2011". Bạn có nghĩa là 10 tháng mười hai hoặc 12 tháng mười? Bạn cần tạo danh sách mẫu riêng của mình để thử. Danh sách này sẽ thay đổi tùy theo ngôn ngữ và cách "dự kiến" của người nào đó ở quốc gia/miền địa phương đó sẽ giải thích ngày tháng.
Không thực sự. BalusC đã viết một bài đăng tuyệt vời trên DateUtil, rằng "giải quyết" hầu hết các định dạng ngày phân tích cú pháp.
Giải pháp tốt nhưng không xem xét tz theo định dạng ngày –
@Merson Moretto, câu hỏi của OP không bao gồm Múi giờ. –
Bạn có thể sử dụng DateFormat.parse(...)
và sử dụng ngôn ngữ cho định dạng ngày, nhưng điều đó vẫn không thể xử lý tất cả các trường hợp đó. Nó cũng không dễ dàng như vậy: hãy xem xét hai ngày có thể sau đây (giống nhau): 18/07/2011
và 07/18/2011
- cách phân tích cú pháp đó mà không biết liệu đó có phải là dd/mm/yyyy
hoặc mm/dd/yyyy
(ví dụ: Saudi Arabia)?
Đây là vấn đề lớn, chủ yếu là do ngày tháng là khái niệm mờ - ví dụ: 02-01-2012 vào tháng 2 hoặc tháng 1?
Điều tốt nhất bạn có thể làm là thu thập một loạt các chuỗi định dạng khác nhau và cố gắng mỗi người cho đến khi bạn có được một trận đấu ...
Chẳng gì đó trong thư viện API chuẩn là. Natty là thư viện cố gắng điều này, nhưng bạn nên biết rằng điều này chỉ có thể là một "nỗ lực tốt nhất", vì những thứ như 2/1/2012 chỉ đơn giản là mơ hồ: không có thông tin về định dạng, không thể quyết định được Ngày 2 tháng 2 hoặc ngày 2 tháng 1.
Đá nguyên sinh. Cảm ơn – Kirby
hãy thử DateFormat với Định dạng DateFormat.MEDIUM và SHORT mặc định.
public static void main(String[] args) {
// Make a String that has a date in it, with MEDIUM date format
// and SHORT time format.
String dateString = "Nov 4, 2003 8:14 PM";
// Get the default MEDIUM/SHORT DateFormat
DateFormat format =
DateFormat.getDateTimeInstance(
DateFormat.MEDIUM, DateFormat.SHORT);
// Parse the date
try {
Date date = format.parse(dateString);
System.out.println("Original string: " + dateString);
System.out.println("Parsed date : " +
date.toString());
}
catch(ParseException pe) {
System.out.println("ERROR: could not parse date in string \"" +
dateString + "\"");
}
snipped từ http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/
On ngoại lệ bạn phải quyết định những gì cần làm tiếp theo, bạn có thể xây dựng một hệ thống các Parsing trys. như:
SimpleDateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat df2 = new SimpleDateFormat("dd-MM-yyyy");
df1.parse(..)
df2.parse(..)
v.v.
- 1. Phân tích cú pháp chung của PB trong java
- 2. Phân tích chuỗi ngày giờ
- 3. Phân tích cú pháp ngày RFC 2822 trong JAVA
- 4. Phân tích cú pháp một API Youtube Ngày trong Java
- 5. Cách phân tích WSDL trong Java?
- 6. Cách phân tích ngày/giờ từ chuỗi?
- 7. Cách phân tích cú pháp ngày trong GWT?
- 8. Ngày phân tích cú pháp trong Bash
- 9. Phân tích chuỗi ngày để nhận năm
- 10. Ngày phân tích cú pháp trong MySQL
- 11. Phân tích các ngày mờ trong Haskell (hoặc C)
- 12. Phân tích chuỗi cho các ngày trong PHP
- 13. Chuỗi phân tích ngày tháng trong Ruby
- 14. phân tích chuỗi ngày trong python (chuyển đổi chuỗi ngày)
- 15. Java: Làm cách nào để phân tích cú pháp đúng ngày?
- 16. Làm thế nào để tạo một trình định dạng ngày chung trong java cho Solr?
- 17. Phân tích các chuỗi ngày tháng bằng micro giây
- 18. Làm cách nào để phân tích kết xuất chuỗi java?
- 19. Cách phân tích ngày/giờ/phút/giây bằng ruby?
- 20. Phân tích và định dạng ngày Haskell
- 21. xls2csv: sai các tế bào ngày phân tích
- 22. Làm cách nào để phân tích các ngày có -0400 chuỗi múi giờ bằng Python?
- 23. Làm cách nào để phân tích cú pháp các ngày tương đối với Perl?
- 24. Phân tích tệp văn bản trong Java
- 25. Cách phân tích chuỗi thành ngày theo xslt 2.0
- 26. Cách phân tích cú pháp JSONArray trong Java với Json.simple?
- 27. phân tích chuỗi xml trong java?
- 28. Phân tích đối tượng từ chuỗi trong Java
- 29. Định dạng ngày có thể đọc và phân tích cú pháp của con người trong Java
- 30. Phân tích ngày giờ đơn giản
Từ "phân tích" ngụ ý quan hệ cú pháp. Để "phân tích cú pháp" bất cứ điều gì có ý nghĩa, cú pháp là phải. – pavanlimo