How do I parse “dd.MM.yyyy G” to ISO-Date in Java?
本问题已经有最佳答案,请猛点这里访问。
嘿家伙我把日期
我的实际代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException { Date date; if (simpleFormat.equals("long")) { date = new Date(Long.parseLong(simpleDate)); } else { SimpleDateFormat df = new SimpleDateFormat(simpleFormat); df.setTimeZone(TimeZone.getTimeZone("UTC")); // or else testcase //"1964-02-24" would // result"1964-02-23" date = df.parse(simpleDate); } return getISODate(date, isoFormat); } |
有谁知道我该怎么做?
试试这个:
1 2 3 | String string ="01.01.1000 AD"; SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy GG"); Date date = dateFormat.parse(string); |
日期格式中的G代表时代。
请参阅http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
这有望帮助[使用标准jdk很棘手,但至少可能 - 并且JSR 310不支持此功能:-(]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | DateFormat df = new SimpleDateFormat("dd.MM.yyyy GG", Locale.US); DateFormat iso = new SimpleDateFormat("yyyy-MM-dd"); try { Date d = df.parse("01.01.1000 AD"); System.out.println(iso.format(d)); // year-of-era => 1000-01-01 (not iso!!!) // now let us configure gregorian/julian date change right for ISO-8601 GregorianCalendar isoCalendar = new GregorianCalendar(); isoCalendar.setGregorianChange(new Date(Long.MIN_VALUE)); iso.setCalendar(isoCalendar); System.out.println(iso.format(d)); // proleptic iso year: 1000-01-06 } catch (ParseException ex) { ex.printStackTrace(); } |
尝试它可能会有所帮助:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException { Date date; if (simpleFormat.equals("long")) { date = new Date(Long.parseLong(simpleDate)); } else { SimpleDateFormat df = new SimpleDateFormat(simpleFormat); df.setTimeZone(TimeZone.getTimeZone("yyyy-MM-dd'T'HH:mm:ss.SSSZ")); // or else testcase //"1964-02-24" would // result"1964-02-23" date = df.parse(simpleDate); } return getISODate(date, isoFormat); } |
像这样的东西?
1 2 3 | String date ="01.01.1000 AD"; SimpleDateFormat parserSDF = new SimpleDateFormat("dd.mm.yyyy GG"); System.out.println(parserSDF.parse(date)); |