java simpledateformat 日期格式的疑问 现Excel表中有如下格式数据2004-04-12004-4-0104-4-1需要转化为标准的 date类型 2004-04-01如何操作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2004-04-12004-4-0104-4-1字符串不统一,估计的重新格式化一些你的字符串成为统一的格式先import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Test10 { /** * @param args * @author sunstar * @date 2012-7-24 上午10:18:11 */ public static void main(String[] args) { String[] arrs = {"2004-04-1", "2004-4-01", "04-4-1"} ; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" ) ; Date[] date = new Date[arrs.length] ; for (int i = 0; i < arrs.length; i++){ arrs[i] = formatYear(arrs[i],4, "20") ; try { date[i] = sdf.parse(arrs[i]) ; } catch (ParseException e) { e.printStackTrace(); } } for (int i = 0; i < arrs.length; i++){ System.out.println(arrs[i] + " -- " + sdf.format(date[i])) ; } } /** * * @param dataStr 原来的日期字符串,可能为2004-4-1 ,也可能是04-4-1 * @param len 年份的长度 * @param str 如果年份长度不够则在前面加上的字符串,比如1、年份:04 ,长度为4, str ="20" ,则变为2004 * 2、如果需要将2004-04-01格式化为04-04-01则 长度为2 即可 * @return * @author sunstar * @date 2012-7-24 上午10:27:57 */ public static String formatYear(String dataStr, int len, String str){ String[] arrs = dataStr.split("-") ; if (arrs[0].length() <len){ arrs[0] = str + arrs[0] ; }else if(arrs[0].length() > len){ arrs[0] = arrs[0].substring(arrs[0].length() -len) ; } return arrs[0] + "-" + arrs[1]+ "-" + arrs[2]; }}2004-04-1 -- 2004-04-012004-4-01 -- 2004-04-012004-4-1 -- 2004-04-01 这种date,应该还是字符串,不是标准DateSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String s1 = "2004-04-1"; String s2 = "2004-4-01"; System.out.println(sdf.format(sdf.parse(s1))); System.out.println(sdf.format(sdf.parse(s2)));前两个能弄,但后一种,只是04-4-1。怎么能判断是2004-04-01,还是1904-04-04呢?这也太自动化了,写04就知道是2004?前面要手动加“20”才行。 Digester.getParser问题 在线等 十万火急 新手求助 JSP ServletContext 报空指针错误 !!!!!!!! hibernate用spring包装类getHibernateTemplate()方法时的问题 jsp分页 一个简单的javascript的参数包含双引号问题 问大家一个非常简单的问题!!!!!!! 问个sql累加问题! 用过jspsmartupload的进来 请教一个关于tomcat的问题 Driver异常 网站出错咯!!!! 我 热 啊,实在是不能理解
2004-4-01
04-4-1字符串不统一,估计的重新格式化一些你的字符串成为统一的格式先import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test10 { /**
* @param args
* @author sunstar
* @date 2012-7-24 上午10:18:11
*/
public static void main(String[] args) { String[] arrs = {"2004-04-1", "2004-4-01", "04-4-1"} ;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" ) ;
Date[] date = new Date[arrs.length] ;
for (int i = 0; i < arrs.length; i++){
arrs[i] = formatYear(arrs[i],4, "20") ;
try {
date[i] = sdf.parse(arrs[i]) ;
} catch (ParseException e) {
e.printStackTrace();
}
}
for (int i = 0; i < arrs.length; i++){
System.out.println(arrs[i] + " -- " + sdf.format(date[i])) ;
}
}
/**
*
* @param dataStr 原来的日期字符串,可能为2004-4-1 ,也可能是04-4-1
* @param len 年份的长度
* @param str 如果年份长度不够则在前面加上的字符串,比如1、年份:04 ,长度为4, str ="20" ,则变为2004
* 2、如果需要将2004-04-01格式化为04-04-01则 长度为2 即可
* @return
* @author sunstar
* @date 2012-7-24 上午10:27:57
*/
public static String formatYear(String dataStr, int len, String str){
String[] arrs = dataStr.split("-") ;
if (arrs[0].length() <len){
arrs[0] = str + arrs[0] ;
}else if(arrs[0].length() > len){
arrs[0] = arrs[0].substring(arrs[0].length() -len) ;
}
return arrs[0] + "-" + arrs[1]+ "-" + arrs[2];
}
}2004-04-1 -- 2004-04-01
2004-4-01 -- 2004-04-01
2004-4-1 -- 2004-04-01
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s1 = "2004-04-1";
String s2 = "2004-4-01";
System.out.println(sdf.format(sdf.parse(s1)));
System.out.println(sdf.format(sdf.parse(s2)));前两个能弄,但后一种,只是04-4-1。怎么能判断是2004-04-01,还是1904-04-04呢?这也太自动化了,写04就知道是2004?前面要手动加“20”才行。