需求:获取本月的第一天和最后一天
分别使用Js和java代码实现,不能用笨法子,比如根据月份判断大小月,平闰年判断一个多少天,然后取出第一天和最后一天。
以下是实现方式,java代码:
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String firstDayOfMonth = sdf.format(calendar.getTime());
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String lastDayOfMonth = sdf.format(calendar.getTime());
这里使用Calendar的API实现,步骤如下:
1,获取一个Calendar实例,这个实例可以是当月也可以自己来设置
2,设置实例的项:DAY_OF_MONTH,表示按月表示的天,设置为最大值或者最小值。
3,使用getTime()获得java.util.Date类型的对象,然后进行格式化
note:这里Calendar的实例很重要,要获得某月的信息,就要让该实例的月份与结果对应,否则是别的月。
JS代码:没有找到现成的API,只能自己DIY了
// 获取当前月的第一天
<span style="white-space:pre"> </span>function getFirstDayOfMonth(date) {
<span style="white-space:pre"> </span> var year = date.getFullYear();
<span style="white-space:pre"> </span> var month = date.getMonth();
<span style="white-space:pre"> </span> return new Date(year, month, 1);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>//获取当前月的最后一天
<span style="white-space:pre"> </span>function getLastDayOfMonth(date) {
<span style="white-space:pre"> </span> var current = date;
<span style="white-space:pre"> </span> var currentMonth = current.getMonth();
<span style="white-space:pre"> </span> var nextMonth = ++currentMonth;
<span style="white-space:pre"> </span> var nextMonthDayOne = new Date(current.getFullYear(), nextMonth, 1);
<span style="white-space:pre"> </span> var minusDate = 24*3600*1000;
<span style="white-space:pre"> </span> return new Date(nextMonthDayOne.getTime() - minusDate);
<span style="white-space:pre"> </span>}
获取第一天相对容易,使用Date的构造函数,把传入的实例的年和月取出来分别传入,但还有一个日,第一天嘛当然取1就可以了。
但最后一天相对比较麻烦了,因为不知道该月有多少天,上一个办法就不能轻易奏效了。思路是:取下月第一天的昨天,那肯定是当月的最后一天了