一. java.util.Date
这个类的许多方法已经过时,有下面两个构造方法,它们是完全等价的:
Date date = new Date(); 或者
Date date = new Date(System.currentTimeMillis());
二. java.util.Calendar
Date类的很多方法之所以过时,是把大多数方法放到本类中来了.
1. 获得一个Calendar实例
总的来说可以通过构造方法来new一个实例,还可以通过类本身的静态方法getInstance()方法来获得一个实例.
在这里我们推荐通过getInstance()方法来获得一个实例,有如下原因
(1) 在Calendar加载时,就相应的把静态方法加载进来了,我们直接使用getInstance()方法更为方便,至于JDK中的getInstance方法是是不是采用单例这么我们目前还接触不到这个层次
(2) 符合编程习惯.如果我们使用Spring来管理对象,通过是不用使用new来获得一个实例的
(3) Calendar的构造方法的权限是protected,这就说明该方法只能在Calendar的子类中使用
2. 下面是一个计算两个日期间隔月份数的方法
三. java.text.SimpleDateFormat
本类就是格式化日期的,经常碰到的是用户将输入一个字符串类型的日期,比如”2010-12-22”,这时就需要我们使用本类将其转换成Date类型.请下面例子
* 字符串转换成日期
*
*/
public static Date stringToDate(String str) {
Date date = null;
if ("".equals(str) || str == null)
return null;
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
try {
date = sf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 日期转换成字符串
*
*/
public static String dateToString(Date date) {
String stringDate = "";
if (date != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
stringDate = dateFormat.format(date);
}
return stringDate;
}
下面是一个生成日历的JS代码,作用是:生成当前月到未来4个月的日历
<%
Calendar c = Calendar.getInstance();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM");
String testNow = format.format(c.getTime());
c.add(Calendar.MONTH,4);
String endDate = format.format(c.getTime());
%>
var today='<%=testNow%>';
var endDate = '<%=endDate%>';
WdatePicker({dateFmt:'yyyy-MM',minDate:today,maxDate:endDate});
}