⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dateb.java

📁 很不错的结合DateTime的综合例子
💻 JAVA
字号:
/**
 * 日期实用工具(Date与String转换函数)
 * 做统计功能的时候, 经常要统计本周, 本月, 本季度, 本年的数据, 这就需要以某一天为基准,
 * 找出这些日期的范围.
 * */

package com.lianjiping.demoa;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;

public class DateB {
    public static final int YEAR = 1129 + 6;
    public static final int MONTH = 1129 + 4;
    public static final int DATE = 1129 + 2;

    public static final int SEASON = 1129 + 5;
    public static final int WEEK = 1129 + 3;
    public static final int HOUR = 1129 + 1;

    public static final String BEGIN = "开始";
    public static final String END = "结束";

    public static Map getDateRange(Date date, int range) {
        Map map = new HashMap();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        //week
        if (range == WEEK) {
            int cnt = 0;
            for (; calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY; cnt++) {
                calendar.add(Calendar.DATE, -1);
            }
            map.put(BEGIN, calendar.getTime());
            calendar.add(Calendar.DATE, cnt);
            while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
                calendar.add(Calendar.DATE, 1);
            }
            map.put(END, calendar.getTime());
        }

        //month
        else if (range == MONTH) {
            calendar.set(Calendar.DATE, 1);
            map.put(BEGIN, calendar.getTime());

            int month = calendar.get(Calendar.MONTH) + 1;
            switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                calendar.set(Calendar.DATE, 31);
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                calendar.set(Calendar.DATE, 30);
                break;
            case 2:
                int year = calendar.get(Calendar.YEAR);
                if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                    calendar.set(Calendar.DATE, 29);
                } else {
                    calendar.set(Calendar.DATE, 28);
                }
                break;
            }
            map.put(END, calendar.getTime());
        }

        //season
        else if (range == SEASON) {
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            switch (month / 3) {
            //01-01 03-31
            case 0:
                calendar.set(Calendar.MONTH, 0);
                calendar.set(Calendar.DATE, 1);
                map.put(BEGIN, calendar.getTime());
                calendar.set(Calendar.MONTH, 2);
                calendar.set(Calendar.DATE, 31);
                map.put(END, calendar.getTime());
                break;
                //04-01 06-30
            case 1:
                calendar.set(Calendar.MONTH, 3);
                calendar.set(Calendar.DATE, 1);
                map.put(BEGIN, calendar.getTime());
                calendar.set(Calendar.MONTH, 5);
                calendar.set(Calendar.DATE, 30);
                map.put(END, calendar.getTime());
                break;
                //07-01 09-30
            case 2:
                calendar.set(Calendar.MONTH, 6);
                calendar.set(Calendar.DATE, 1);
                map.put(BEGIN, calendar.getTime());
                calendar.set(Calendar.MONTH, 8);
                calendar.set(Calendar.DATE, 30);
                map.put(END, calendar.getTime());
                break;
                //10-01 12-31
            case 3:
                calendar.set(Calendar.MONTH, 9);
                calendar.set(Calendar.DATE, 1);
                map.put(BEGIN, calendar.getTime());
                calendar.set(Calendar.MONTH, 11);
                calendar.set(Calendar.DATE, 31);
                map.put(END, calendar.getTime());
                break;
            }
        }

        //year
        else if (range == YEAR) {
            calendar.set(Calendar.MONTH, 0);
            calendar.set(Calendar.DATE, 1);
            map.put(BEGIN, calendar.getTime());
            calendar.set(Calendar.MONTH, 11);
            calendar.set(Calendar.DATE, 31);
            map.put(END, calendar.getTime());
        }

        //default day
        else {
            map.put(BEGIN, calendar.getTime());
            map.put(END, calendar.getTime());
        }
        //optional
        setTime(map);
        return map;
    }

    public static Map getDateRange(String ref, int range) {
        if (!ref.matches("\\d{4}-\\d{1,2}-\\d{1,2}"))
            return null;
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, Integer.parseInt(ref.split("-")[0]));
        calendar.set(Calendar.MONTH, Integer.parseInt(ref.split("-")[1]) - 1);
        calendar.set(Calendar.DATE, Integer.parseInt(ref.split("-")[2]));
        Date date = calendar.getTime();
        return getDateRange(date, range);
    }

    public static String dateToStr(Date date, String format) {
        SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat
                               .getDateInstance();
        sdf.applyPattern(format);
        return sdf.format(date);
    }

    public static String dateToStr(Date date) {
        return dateToStr(date, "yyyy-MM-dd");
    }

    public static Date strToDate(String strDate) {
        if (!strDate.matches("\\d{4}-\\d{1,2}-\\d{1,2}"))
            return null;
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, Integer.parseInt(strDate.split("-")[0]));
        calendar.set(Calendar.MONTH,
                     Integer.parseInt(strDate.split("-")[1]) - 1);
        calendar.set(Calendar.DATE, Integer.parseInt(strDate.split("-")[2]));
        return calendar.getTime();
    }

    private static void setTime(Map map) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime((Date) map.get(BEGIN));
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        map.put(BEGIN, calendar.getTime());

        calendar.setTime((Date) map.get(END));
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        map.put(END, calendar.getTime());
    }

    public static void main(String args[]) {
        System.out.println(getDateRange(new Date(), WEEK));
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -