参考:http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/latest/html/zh_CN/api/
今天看到别人写的日,月,季,年报表.这里就涉及到日期,代码用了几个switch,if,一时用30号,一时用31号,在数据库还调用lastday函数...
java里面的有个日期的好工具Calendar,或许有些人不知道.
就上面的日期需求使用Calendar可以轻易满足需求.下面假设parameter是从页面传过来的一个时间或当前时间.注释就不写了,通过上面的API就易懂.
package com.example;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 注意:Calendar的月是从0开始,日是从1开始
*/
public class Main {
private static final DateFormat DATE_FORMAT=new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
Date parameter=new Date();
Calendar calendar=Calendar.getInstance();
calendar.setTime(parameter);
//获取当前月的首日与下月的首日的日期
calendar.set(Calendar.DAY_OF_MONTH,1);
System.out.println("当前月的首日日期:"+DATE_FORMAT.format(calendar.getTime()));
calendar.add(Calendar.MONTH,1);
System.out.println("下月的首日日期:"+DATE_FORMAT.format(calendar.getTime()));
calendar.setTime(parameter);
//获取当前季度的首日与下个季度的首日的日期
calendar.add(Calendar.MONTH,-calendar.get(Calendar.MONTH)%3);
calendar.set(Calendar.DAY_OF_MONTH,1);
System.out.println("当前季度的首日日期:"+DATE_FORMAT.format(calendar.getTime()));
calendar.add(Calendar.MONTH,3);
System.out.println("下季度的首日日期:"+DATE_FORMAT.format(calendar.getTime()));
calendar.setTime(parameter);
//获取当前年的首日与下年的首日的日期
calendar.set(Calendar.MONTH,0);
calendar.set(Calendar.DAY_OF_MONTH,1);
System.out.println("当前年的首日日期:"+DATE_FORMAT.format(calendar.getTime()));
calendar.add(Calendar.YEAR,1);
System.out.println("下年的首日日期:"+DATE_FORMAT.format(calendar.getTime()));
}
}