[英]split String without delimiters
我的控制器将此字符串“ 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
感谢大家
我也许会使用Joda-Time DateTimeFormat 。
为什么呢 它将检查格式,包括小时/分钟/秒的有效值,并给您返回一个合适的DateTime对象,您可以使用该对象进行处理(包括使用类似方法对其进行重新格式化)。
您只需为它提供要解析的格式,其余的工作就会完成。 您有个约会,因此应这样对待。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.