现在我有从系统读出了一个字符串日期mydate我想把它变成日期型SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
return simpleDateFormat.parse(mydate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}这样写以后,日期如果是2008-4-5可以被转换成2008-04-05,但是从系统读出的日期格式不一定只是这种,如果是2008/04/05 这里就不能用这种(yyyy-MM-dd)格式了。系统是操作系统。不管系统是什么日期格式,输出的全是yyyy-MM-dd 大家有什么办法么
try {
return simpleDateFormat.parse(mydate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}这样写以后,日期如果是2008-4-5可以被转换成2008-04-05,但是从系统读出的日期格式不一定只是这种,如果是2008/04/05 这里就不能用这种(yyyy-MM-dd)格式了。系统是操作系统。不管系统是什么日期格式,输出的全是yyyy-MM-dd 大家有什么办法么
System.out.println(f.format(Calendar.getInstance().getTime()));
可以先用正则表达式先讲字符串中的非数字符号替换成“-”,然后利用下面代码转换成日期型
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
return simpleDateFormat.parse(mydate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
//如果mydate中有 "/" 就会替换成第("yyyy-MM-dd")类型 如果本身就是 ("yyyy-MM-dd") 就不会发生替换
//PS: 通过测试
mydate=mydate.replaceAll("/","-");
return simpleDateFormat.parse(mydate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
System.out.println(f.format(Calendar.getInstance().getTime()));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
就好了,其实这个格式也就只是一个帮助用户理解时间段形式。
例如windows就可以用"/","-","."这些分隔符,只要是用户能个知道时间就行了。
何必拘泥于格式呢?
String.format("%1$tF %1$tT", System.currentTimeMillis());//一直都是你想要得字符串格式
别再自己写这些方法了。给你推荐一个现成的包--Joda Time。 网站是:http://joda-time.sourceforge.net/。
下载的网址为:http://sourceforge.net/project/showfiles.php?group_id=97367&package_id=104212
目前最新的版本是1.5.2
下载完之后你可以很Easy的这么写: DateTime date1 = new DateTime("2008-4-27");
DateTime date2 = new DateTime("2008-5-1");
Days days = Days.daysBetween(date1, date2);
System.out.println(days.getDays());
一但你使用上这个日期包,“一旦拥有,别无所求”了
字符串替换...