Java将字符串转换为时间,支持多种格式
2017-11-25 23:04
666 查看
适用格式
//2017/11/25 11:11:11
//2017-11-25 11:11:11
//2017.11.25 11:11:11
//2017/11/25
//2017-11-25
//2017.11.25
public String judgeFormat(String time){ String regex1 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}$"; String regex2 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}$"; Pattern p1 = Pattern.compile(regex1); Matcher m1 = p1.matcher(time); if(m1.matches()){ return "yyyy-MM-dd||yyyy.MM.dd||yyyy/MM/dd"; } Pattern p2 = Pattern.compile(regex2); Matcher m2 = p2.matcher(time); if(m2.matches()){ return "yyyy.MM.dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss"; } return null; } public Date convertStringtoDate(String time) throws ParseException{ Date date = null; if(judgeFormat(time).startsWith("yyyy-MM-dd")){ time = convertString(time); date = new SimpleDateFormat("yyyy-MM-dd").parse(time); return date; }else if(judgeFormat(time).endsWith("yyyy-MM-dd HH:mm:ss")){ time = convertString(time); date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time); return date; } return null; } public String convertString(String time){ if(time.contains("/")){ time = time.replace("/", "-"); }else if(time.contains(".")){ time = time.replace(".", "-"); }else { } return time; }正则表达式部分还需要修改.....
----------------------------------------------------------------------======================================------------------------------------------------------------------
字符串前后空格匹配,格式限定
public String judgeFormat(String time){ // String regex1 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}$"; // String regex2 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}$"; String regex1 = "^\\s+\\d{4}(-|/|\\.){1}\\d{2}(-|/|\\.){1}\\d{2}\\s+"; String regex2 = "^\\s+\\d{4}(-|/|\\.){1}\\d{2}(-|/|\\.){1}\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}\\s+"; Pattern p1 = Pattern.compile(regex1); Matcher m1 = p1.matcher(time); if(m1.matches()){ return "yyyy-MM-dd||yyyy.MM.dd||yyyy/MM/dd"; } Pattern p2 = Pattern.compile(regex2); Matcher m2 = p2.matcher(time); if(m2.matches()){ return "yyyy.MM.dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss"; } return "格式不符合要求"; } public Date convertStringtoDate(String time) throws ParseException{ Date date = null; if(judgeFormat(time).startsWith("yyyy-MM-dd")){ time = convertString(time); date = new SimpleDateFormat("yyyy-MM-dd").parse(time); return date; }else if(judgeFormat(time).endsWith("yyyy-MM-dd HH:mm:ss")){ time = convertString(time); date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time); return date; } return null; } public String convertString(String time){ if(time.contains("/")){ time = time.replace("/", "-"); }else if(time.contains(".")){ time = time.replace(".", "-"); }else { } return time; }
前后空格0个或多个,增加中文字符匹配
public static final String FORMATYYYYMMMDD = "yyyy-MM-dd||yyyy.MM.dd||yyyy/MM/dd"; public static final String FORMATYYYYMMDD_Z = "yyyy年MM月dd日"; public static final String FORMATYYYYMMDDHHMMSS = "yyyy.MM.dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss"; public static final String FORMATYYYYMMDDHHMMSS_Z = "yyyy年MM月dd日 HH时mm分ss秒"; public static final String FORMATUNCR = "格式不符合要求"; public String judgeFormat(String time){ // String regex1 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}$"; // String regex2 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}$"; String regex1 = "^\\s*\\d{4}(-|/|\\.){1}\\d{2}(-|/|\\.){1}\\d{2}\\s*"; String regex2 = "^\\s*\\d{4}(-|/|\\.){1}\\d{2}(-|/|\\.){1}\\d{2}\\s+(\\d{2}:){2}\\d{2}\\s*"; String regex3 = "^\\s*\\d{4}([\u4e00-\u9fa5]){1}\\d{2}([\u4e00-\u9fa5]){1}\\d{2}([\u4e00-\u9fa5]){1}\\s*"; String regex4 = "^\\s*\\d{4}([\u4e00-\u9fa5]){1}( 4000 \\d{2}([\u4e00-\u9fa5]){1}){2}\\s*(\\d{2}([\u4e00-\u9fa5]){1}){3}\\s*"; Pattern p1 = Pattern.compile(regex1); Matcher m1 = p1.matcher(time); if(m1.matches()){ return FORMATYYYYMMMDD; } Pattern p2 = Pattern.compile(regex2); Matcher m2 = p2.matcher(time); if(m2.matches()){ return FORMATYYYYMMDDHHMMSS; } Pattern p3 = Pattern.compile(regex3); Matcher m3 = p3.matcher(time); if(m3.matches()){ return FORMATYYYYMMDD_Z; } Pattern p4 = Pattern.compile(regex4); Matcher m4 = p4.matcher(time); if(m4.matches()){ return FORMATYYYYMMDDHHMMSS_Z; } return FORMATUNCR; } public Date convertStringtoDate(String time) throws Exception{ Date date = null; String format = judgeFormat(time); if(FORMATYYYYMMMDD.equals(format)||FORMATYYYYMMDD_Z.equals(format)){ time = convertString(time); date = new SimpleDateFormat("yyyy-MM-dd").parse(time); return date; }else if(FORMATYYYYMMDDHHMMSS.equals(format)||FORMATYYYYMMDDHHMMSS_Z.equals(format)){ time = convertString(time); date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time); return date; } throw new Exception(FORMATUNCR); } public String convertString(String time){ // if(time.contains("/")){ // time = time.replace("/", "-"); // }else if(time.contains(".")){ // time = time.replace(".", "-"); // }else { // // } String format = judgeFormat(time); if(FORMATYYYYMMMDD.equals(format)||FORMATYYYYMMDDHHMMSS.equals(format)){ time = time.replaceAll("/|\\.", "-"); }else if(FORMATYYYYMMDD_Z.equals(format)){ time = time.replaceAll("[\u4e00-\u9fa5]", "-"); time = time.substring(0, time.length() - 1); }else if(FORMATYYYYMMDDHHMMSS_Z.equals(format)){ time = time.replaceAll("[\u4e00-\u9fa5]", "-"); String[] timeArray = time.split("-"); time = timeArray[0] + "-" + timeArray[1] + "-" + timeArray[2] + " " + timeArray[3] + ":" + timeArray[4] +":"+ timeArray[5]; } return time; }-----------------------------------------------------------------------------------------------------------之前写的判断两次格式有点浪费啊,修改converString方法
public static final String FORMATYYYYMMMDD = "yyyy-MM-dd||yyyy.MM.dd||yyyy/MM/dd"; public static final String FORMATYYYYMMDD_Z = "yyyy年MM月dd日"; public static final String FORMATYYYYMMDDHHMMSS = "yyyy.MM.dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss"; public static final String FORMATYYYYMMDDHHMMSS_Z = "yyyy年MM月dd日 HH时mm分ss秒"; public static final String FORMATUNCR = "格式不符合要求"; public String judgeFormat(String time){ // String regex1 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}$"; // String regex2 = "^\\d{4}\\S{1}\\d{2}\\S{1}\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}$"; String regex1 = "^\\s*\\d{4}(-|/|\\.){1}\\d{2}(-|/|\\.){1}\\d{2}\\s*"; String regex2 = "^\\s*\\d{4}(-|/|\\.){1}\\d{2}(-|/|\\.){1}\\d{2}\\s+(\\d{2}:){2}\\d{2}\\s*"; String regex3 = "^\\s*\\d{4}([\u4e00-\u9fa5]){1}\\d{2}([\u4e00-\u9fa5]){1}\\d{2}([\u4e00-\u9fa5]){1}\\s*"; String regex4 = "^\\s*\\d{4}([\u4e00-\u9fa5]){1}(\\d{2}([\u4e00-\u9fa5]){1}){2}\\s*(\\d{2}([\u4e00-\u9fa5]){1}){3}\\s*"; Pattern p1 = Pattern.compile(regex1); Matcher m1 = p1.matcher(time); if(m1.matches()){ return FORMATYYYYMMMDD; } Pattern p2 = Pattern.compile(regex2); Matcher m2 = p2.matcher(time); if(m2.matches()){ return FORMATYYYYMMDDHHMMSS; } Pattern p3 = Pattern.compile(regex3); Matcher m3 = p3.matcher(time); if(m3.matches()){ return FORMATYYYYMMDD_Z; } Pattern p4 = Pattern.compile(regex4); Matcher m4 = p4.matcher(time); if(m4.matches()){ return FORMATYYYYMMDDHHMMSS_Z; } return FORMATUNCR; } public Date convertStringtoDate(String time) throws Exception{ Date date = null; String format = judgeFormat(time); if(FORMATYYYYMMMDD.equals(format)||FORMATYYYYMMDD_Z.equals(format)){ time = convertString(format,time); date = new SimpleDateFormat("yyyy-MM-dd").parse(time); return date; }else if(FORMATYYYYMMDDHHMMSS.equals(format)||FORMATYYYYMMDDHHMMSS_Z.equals(format)){ time = convertString(format,time); date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time); return date; } throw new Exception(FORMATUNCR); } public String convertString(String format,String time){ // if(time.contains("/")){ // time = time.replace("/", "-"); // }else if(time.contains(".")){ // time = time.replace(".", "-"); // }else { // // } // String format = judgeFormat(time); if(FORMATYYYYMMMDD.equals(format)||FORMATYYYYMMDDHHMMSS.equals(format)){ time = time.replaceAll("/|\\.", "-"); }else if(FORMATYYYYMMDD_Z.equals(format)){ time = time.replaceAll("[\u4e00-\u9fa5]", "-"); time = time.substring(0, time.length() - 1); }else if(FORMATYYYYMMDDHHMMSS_Z.equals(format)){ time = time.replaceAll("[\u4e00-\u9fa5]", "-"); String[] timeArray = time.split("-"); time = timeArray[0] + "-" + timeArray[1] + "-" + timeArray[2] + " " + timeArray[3] + ":" + timeArray[4] +":"+ timeArray[5]; } return time; }
相关文章推荐
- java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式
- java中字符串转换成时间格式总结
- Java将Unix时间戳转换成指定格式日期字符串工具类
- Java将CST的时间字符串转换成需要的日期格式字符串
- java工具类——字符串类型的时间格式转换为Timestamp类型
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- Java日期转换SimpleDateFormat格式大全 和 判断是否为合法的日期时间字符串?
- Java时间日期字符串格式转换大全
- JAVA字符串转时间及编码格式转换等
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java中字符串转换成时间格式总结
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java 如何将日期类型Date 时间戳 转换为 期望格式的 日期字符串(mongo db)
- 在java中如何把字符串转换成时间格式?
- java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式
- java中字符串转换成时间格式总结
- java中字符串转换成时间格式总结
- unix时间戳转换成指定格式日期的字符串 java