将字符串形式的时间转换成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);
[解决办法]
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);