我的控制器接收这个字符串“20120115Z”作为@RequestParam,代表一个日期。
我想将其转换为这种格式:yyyy-MM-dd,所以我会有一个像 2012-01-15 这样的新字符串。
如您所见,没有分隔符,只有“Z”始终作为最后一个字符。
我的方法很明显:
String data =
strData.substring(0, 4) + "-" +
strData.substring(4, 6) + "-" +
strData.substring(6, 8);
它有效,但正如您所知,这些“神奇数字”是要避免的。我也尝试使用像“^[^\s]{4}[^\s]{2}[^\s]{2}Z$”这样的正则表达式,但没有成功。
任何的想法?
更新:最后我已经按照@Brian Agnew 的建议使用 Joda-Time DateTime 类完成了它
DateTimeFormatter fmt = DateTimeFormat.forPattern("YYYYMMdd'T'hhmm'Z'");
String strData = "20120115T0600Z";
DateTime dt = fmt.parseDateTime(strData);
印刷方式:
private static void printDateTime(DateTime dt) {
int year = dt.getYear();
int month = dt.getMonthOfYear();
int day = dt.getDayOfMonth();
int hour = dt.getHourOfDay();
int minute = dt.getMinuteOfHour();
int second = dt.getSecondOfMinute();
int millis = dt.getMillisOfSecond();
String zone = dt.getZone().toString();
log.info("fecha: "
+ day + "/" + month + "/" + year + " " + hour + ":" + minute + ":" + second + ":" + millis
+ " " + zone + "\n");
}
输出
15/1/2012 6:0:0:0 UTC
谢谢大家