java的Calendar

参考: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()));
    }
}

你可能感兴趣的:(java,calendar)