fork download
  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.List;
  7. import java.util.Locale;
  8.  
  9. public class Main {
  10.  
  11. public static void main(String[] args) {
  12. List<String> unparsedDates = new ArrayList<String>();
  13. unparsedDates.add("6 July 1892");
  14. unparsedDates.add("9 May 1915");
  15. unparsedDates.add("February 335");
  16. unparsedDates.add("1768-02-12");
  17. unparsedDates.add("23 september 63 bc");
  18. unparsedDates.add("19 august ad 14");
  19.  
  20. DateFormat df = new SimpleDateFormat("yyyy-MM-dd G", Locale.ENGLISH);
  21. for (String unparsedDate : unparsedDates) {
  22. try {
  23. Date parsedDate = DateParser.getParsedDate(unparsedDate);
  24. System.out.println(df.format(parsedDate));
  25. } catch (IllegalArgumentException ex) {
  26. System.err.println(ex.getMessage());
  27. }
  28. }
  29. }
  30. }
  31.  
  32. class DateParser {
  33.  
  34. private static final Locale locale = Locale.ENGLISH;
  35. private static final DateFormat[] dateFormats = {
  36. new SimpleDateFormat("dd MMMM yyyy G", locale),
  37. new SimpleDateFormat("dd MMMM G yyyy", locale),
  38. new SimpleDateFormat("yyyy-MM-dd", locale),
  39. new SimpleDateFormat("MMMM yyyy", locale),
  40. new SimpleDateFormat("dd MMMM yyyy", locale)};
  41.  
  42. public static Date getParsedDate(String unparsedDate) {
  43. for (DateFormat dateFormat : dateFormats) {
  44. try {
  45. Date parsedDate = dateFormat.parse(unparsedDate);
  46. return parsedDate;
  47. } catch (ParseException ex) {
  48. }
  49. }
  50. throw new IllegalArgumentException("Cannot parse provided date: " + unparsedDate);
  51. }
  52. }
Success #stdin #stdout 0.06s 246080KB
stdin
Standard input is empty
stdout
1892-07-06 AD
1915-05-09 AD
0335-02-01 AD
1768-02-12 AD
0063-09-23 BC
0014-08-19 AD