JAVA常規字符串日期格式自動識別

/**
 * Test.java
 */
package com.dc.eurekaserver;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.regex.Pattern;

/**
 * @Description: TODO
 * @author dc
 * @date: 2018年9月4日
 */
public class Test {
    public static void main(String[] args) throws ParseException {
        System.out.println(getDateFormat("01-12"));
        System.out.println(getDateFormat("2018-01"));
        System.out.println(getDateFormat("2018-01-12"));
        System.out.println(getDateFormat("11:22"));
        System.out.println(getDateFormat("2018-01-12 11:22:33"));
        System.out.println(getDateFormat("2018-01-12 11:22:33:333"));
        System.out.println(getDateFormat("11時22分33秒333毫秒"));
        System.out.println(getDateFormat("2018/01/12 11時22分33秒333毫秒"));
        System.out.println(getDateFormat("當前2018年01月12日日 11時22分33秒333分"));
        
    }

    /**
     * 常規自動日期格式識別
     * @param str 時間字符串
     * @return Date
     * @author dc
     */
    private static String getDateFormat(String str) {
        boolean year = false;
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");  
        if(pattern.matcher(str.substring(0, 4)).matches()) {
            year = true;
        }
        StringBuilder sb = new StringBuilder();
        int index = 0;
        if(!year) {
            if(str.contains("月") || str.contains("-") || str.contains("/")) {
                if(Character.isDigit(str.charAt(0))) {
                    index = 1;
                }
            }else {
                index = 3;
            }
        }
        for (int i = 0; i < str.length(); i++) {
            char chr = str.charAt(i);
            if(Character.isDigit(chr)) {
                if(index==0) {
                    sb.append("y");
                }
                if(index==1) {
                    sb.append("M");
                }
                if(index==2) {
                    sb.append("d");
                }
                if(index==3) {
                    sb.append("H");
                }
                if(index==4) {
                    sb.append("m");
                }
                if(index==5) {
                    sb.append("s");
                }
                if(index==6) {
                    sb.append("S");
                }
            }else {
                if(i>0) {
                    char lastChar = str.charAt(i-1);
                    if(Character.isDigit(lastChar)) {
                        index++;
                    }
                }
                sb.append(chr);
            }
        }
        return sb.toString();
    }
}

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章