日期工具类

这里写图片描述

package cn.jobs1127.utils;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import org.apache.commons.lang.StringUtils;

/**
 * 日期工具类
 * 如果需要和数据库方面的日期打交道,可以联想下Timestamp
 * @author jobs1127
 *
 */
public class DateTools {
    /**
     * 时间字符串转换
     * DatetoString(new Date(),
     * @param s model:"yyyy-MM-dd HH:mm:ss" "yyyy/MM/dd HH:mm:ss"
     * @return 字符串日期 可以满足各种形式的日期字符串,如4位的年yyyy,或时间15:28等
     */
    public static String dateToString(Date dateTime, String model) {
        SimpleDateFormat dfy = new SimpleDateFormat(model);
        StringBuffer result = new StringBuffer();
        result.append(dfy.format(dateTime));
        return result.toString();
    }
    /**
     * 获取系统时间
     * 
     * @param model 可以为(blank) 空字符串、null
     * @return 预制要返回的时间  默认 yyyy-MM-dd HH:mm:ss
     */
    public static String getSysDate(String model) {
        Date now = new Date();
        if (StringUtils.isBlank(model)) {
            model = "yyyy-MM-dd HH:mm:ss";
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat(model);
        return dateFormat.format(now);
    }
    /**
     * String转Date
     * model:"yyyy-MM-dd HH:mm:ss" "yyyy/MM/dd HH:mm:ss"
     */
    public static Date strToDate(String str,String model) {
        SimpleDateFormat format = new SimpleDateFormat(model);
        try {
            return format.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 指定日期拿到星期几
     * 
     * @param date
     * @return
     */
    public static String getWeekOfDate(Date date) {
        String[] weekOfDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar calendar = Calendar.getInstance();
        if (date != null) {
            calendar.setTime(date);
        }
        int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0) {
            w = 0;
        }
        return weekOfDays[w];
    }
    /**
     * 获取本月的第一天,日期格式为model:"yyyy-MM-dd" "yyyy/MM/dd"
     * @return 本月的第一天
     */
    public static String getBenYueStartTime(String model) {
        SimpleDateFormat S = new SimpleDateFormat(model);
        Calendar yuec = Calendar.getInstance();
        yuec.add(Calendar.MONTH, 0);
        yuec.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
        String jyuesdate = S.format(yuec.getTime()); // 月开始时间
        return jyuesdate;
    }
    /**
     * 拿到本月的最后一天,日期格式为model:"yyyy-MM-dd" "yyyy/MM/dd"
     * @return
     */
    public static String getBenYueEndTime(String model) {
        SimpleDateFormat S = new SimpleDateFormat(model);
        Calendar yuec = Calendar.getInstance();
        yuec.add(Calendar.MONTH, 0);
        yuec.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
        Calendar yueca = Calendar.getInstance();
        String jyueedate = S.format(yueca.getTime()); // 月结束时间
        return jyueedate;
    }
    /**
     * 根据参数日期,获取跟该日期相关季度的开始日期
     * @param date
     * @return
     */
    public static Date getFirstDayOfQuarter(Date date) {
        Calendar cDay = Calendar.getInstance();
        cDay.setTime(date);
        int curMonth = cDay.get(Calendar.MONTH);
        if (curMonth >= Calendar.JANUARY && curMonth <= Calendar.MARCH) {
            cDay.set(Calendar.MONTH, Calendar.JANUARY);
        }
        if (curMonth >= Calendar.APRIL && curMonth <= Calendar.JUNE) {
            cDay.set(Calendar.MONTH, Calendar.APRIL);
        }
        if (curMonth >= Calendar.JULY && curMonth <= Calendar.SEPTEMBER) {
            cDay.set(Calendar.MONTH, Calendar.JULY);
        }
        if (curMonth >= Calendar.OCTOBER && curMonth <= Calendar.DECEMBER) {
            cDay.set(Calendar.MONTH, Calendar.OCTOBER);
        }
        cDay.set(Calendar.DAY_OF_MONTH,cDay.getActualMinimum(Calendar.DAY_OF_MONTH));
        return cDay.getTime();
    }
    /**
     * 根据参数日期,获取跟该日期相关季度的结束日期
     * @param date
     * @return
     */
    public static Date getLastDayOfQuarter(Date date) {
        Calendar cDay = Calendar.getInstance();
        cDay.setTime(date);
        int curMonth = cDay.get(Calendar.MONTH);
        if (curMonth >= Calendar.JANUARY && curMonth <= Calendar.MARCH) {
            cDay.set(Calendar.MONTH, Calendar.MARCH);
        }
        if (curMonth >= Calendar.APRIL && curMonth <= Calendar.JUNE) {
            cDay.set(Calendar.MONTH, Calendar.JUNE);
        }
        if (curMonth >= Calendar.JULY && curMonth <= Calendar.SEPTEMBER) {
            cDay.set(Calendar.MONTH, Calendar.SEPTEMBER);
        }
        if (curMonth >= Calendar.OCTOBER && curMonth <= Calendar.DECEMBER) {
            cDay.set(Calendar.MONTH, Calendar.DECEMBER);
        }
        cDay.set(Calendar.DAY_OF_MONTH,cDay.getActualMaximum(Calendar.DAY_OF_MONTH));
        return cDay.getTime();
    }
    /**
     * 拿到指定日期的第几周
     * @return
     */
    public static String getDiJiZhou(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        String wdate = df.format(date);
        try { 
            date = df.parse(wdate);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Calendar cld = Calendar.getInstance();
        cld.setTime(date);
        SimpleDateFormat d = new SimpleDateFormat("w");
        String dijizhou = d.format(date); // 第几周
        SimpleDateFormat z = new SimpleDateFormat("E");
        String dizhou = z.format(date); // 周几
        if (dizhou.equals("星期日")) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            date = calendar.getTime();
            dijizhou = String.valueOf(Integer.valueOf(dijizhou) - 1);
        }
        return dijizhou;
    }
    /**
     * 参数日期,获取季度字符串
     * @param date
     * @return
     */
    public static String getJidu(Date date) {
        //根据需要的字符串进行修改
        String q1 = "Q1";
        String q2 = "Q2";
        String q3 = "Q3";
        String q4 = "Q4";
        SimpleDateFormat df = new SimpleDateFormat("MM");
        int month = Integer.parseInt(df.format(date));
        if (month >= 1 && month <= 3) {
            return q1;
        } else if (month >= 4 && month <= 6) {
            return q2;
        } else if (month >= 7 && month <= 9) {
            return q3;
        } else if (month >= 10 && month <= 12) {
            return q4;
        }
        return null;
    }
    /**
     * 当前的日期+多少天或减去多少天 得到日期字符串
     * @param day
     * @param return_model 日期格式为model:"yyyy-MM-dd" "yyyy/MM/dd"
     * @return
     */
    public static String getJia_or_jian_Date(int day,String return_model) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_MONTH, +day);
        return dateToString(calendar.getTime(),return_model);
    }
    /**
     * 指定的日期+多少天 得到日期字符串
     * @param day
     * @param return_model 日期格式为model:"yyyy-MM-dd" "yyyy/MM/dd"
     * @return
     */
    public static String getJia_Date(int day,Date date,String return_model) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, +day);
        return dateToString(calendar.getTime(),return_model);
    }
    /**
     * 指定的日期+多少天或减去多少天 得到日期字符串
     * @param day
     * @param return_model 日期格式为model:"yyyy-MM-dd" "yyyy/MM/dd"
     * @return
     */
    public static String getJian_Date(int day,Date date,String return_model) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, -day);
        return dateToString(calendar.getTime(),return_model);
    }
    /**
     * 获取指定日期的年份
     * @param date
     * @return int year
     */
    public static int getYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }   
    /**
     * 获取指定日期的月份
     * @param date
     * @return int mouth
     */
    public static int getMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MONTH)+1;
    }   
    /**
     * 获取指定日期的天
     * @param date
     * @return int day
     */
    public static int getDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DATE);
    }   
    /**
     * 获取其他国家的时间
     * ID 各个时区的可用的ID
     * @return
     */
    public static int getJapanHours(String ID) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone(ID));
        return calendar.get(calendar.HOUR_OF_DAY);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值