日期:2014-05-17  浏览次数:20973 次

将字符串形式的时间转换成yyyy-MM-dd hh:mm:ss的形式(转换的结果也是字符串值)
将字符串形式的时间转换成yyyy-MM-dd hh:mm:ss的形式(转换的结果也是字符串值)
比如:
变量s的值的形式不确定,需要转换成字符串yyyy-MM-dd hh:mm:ss的格式
String s="2011";
String s="2011-8";
String s="2011-08-9";
String s="2011-8-9 9:10";
String s="2011-8-09 9:08:25";
......
需要转换成如下的字符串:
String s1="2011-01-01 00:00:00";
String s1="2011-08-01 00:00:00";
String s1="2011-08-09 00:00:00";
String s1="2011-08-09 09:10:00";
String s1="2011-08-09 09:08:25"
能不能写成一个统一的函数?

------解决方案--------------------
如果你的字符串类型就这么有限的几种的话,就用暴力方法解决吧,5个字符串类型对应5种DateFormat然后逐个解析输出吧,进入一个字符串之后,判断哪个解析匹配成功,然后解析输出

或者是直接用正则表达分析字符串 然后解析输出

我没有发现更好的解决方案

------解决方案--------------------
java代码 用 SimpleDateFormat 传两个参数 格式 要转换的值。
------解决方案--------------------
java.sql.Timestamp nowTime=new java.sql.Timestamp(String str);

------解决方案--------------------
Java code

public static void main(String[] args)throws Exception {
        String arr[] = { "2011", "2011-8", "2011-08-9","2011-8-9 9", "2011-8-9 9:10",
                "2011-8-09 19:08:25" };
        for(int i=0;i<arr.length;i++){
            String standard = toStandard(arr[i]);
            System.out.println(standard);
        }
    }
    static String toStandard(String str){
        String[] dateTime = str.split("\\s");
        String date = dateTime[0];
        String time = dateTime.length>1?dateTime[1]:"";
        return toStandardDate(date) +" "+ toStandardTime(time);
    }
    static String toStandardDate(String date){
        String ymd[] = date.split("-");
        String year = ymd[0];
        String month = ymd.length>1?fill(ymd[1]):"01";
        String day = ymd.length>2?fill(ymd[2]):"01";
        return year +"-"+month+"-"+day;
    }
    static String toStandardTime(String time){
        String[] hms = time.split(":");
        String hh = hms.length>0?fill(hms[0]):"00";
        String mm = hms.length>1?fill(hms[1]):"00";
        String ss = hms.length>2?fill(hms[2]):"00";
        return hh+":"+mm+":"+ss;
    }
    static String fill(String str) {
        if(str.length() == 2){
            return str;
        }else if(str.length() == 1){
            return "0"+str;
        }else if(str.length() == 0){
            return "00";
        }
        throw new IllegalArgumentException("参数不合法!");
    }

------解决方案--------------------
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=format.parse(s);
String str=format.format(date);