簡體   English   中英

不帶分隔符的分割字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM