Bạn có thể đặt nd
vv làm chữ trong số SimpleDateFormat. Bạn có thể xác định bốn định dạng cần thiết và thử chúng. Bắt đầu với th
trước tiên, bởi vì tôi đoán điều này sẽ xảy ra thường xuyên hơn. Nếu nó không thành công với ParseException
, hãy thử cái tiếp theo. Nếu tất cả thất bại, hãy ném ParseException. Mã ở đây chỉ là một khái niệm. Trong thực tế, bạn có thể sẽ không tạo ra các định dạng mới mọi lúc và có thể nghĩ về an toàn luồng.
public static Date hoolaHoop(final String dateText) throws ParseException
{
ParseException pe=null;
String[] sss={"th","nd","rd","st"};
for (String special:sss)
{
SimpleDateFormat sdf=new SimpleDateFormat("MMMM d'"+special+",' yyyy");
try{
return sdf.parse(dateText);
}
catch (ParseException e)
{
// remember for throwing later
pe=e;
}
}
throw pe;
}
public static void main (String[] args) throws java.lang.Exception
{
String[] dateText={"January 10th, 2010","January 1st, 2010","January 2nd, 2010",""};
for (String dt:dateText) {System.out.println(hoolaHoop(dt))};
}
Output:
Sun 10 tháng 1 00:00:00 GMT 2010
Fri Jan 01 00:00:00 GMT 2010
Sat 02 tháng 1 00:00: 00 GMT 2010
Ngoại lệ trong chuỗi "chính" java.text.ParseException: Ngày không thể chia sẻ: ""
"th","nd","rd","st"
tất nhiên chỉ phù hợp với ngôn ngữ tiếng Anh. Ghi nhớ nó trong tâm trí. Ở Pháp, "re","nd"
vâng tôi đoán vậy.
Nguồn
2011-01-18 10:04:00
Vấn đề là "th" (và có lẽ là "thứ" và "nd"), phải không? – Thilo
Thanx mọi người ... nó hoạt động bằng cách thoát khỏi các nhân vật. – srinivasarao