美文网首页
Java日期运算

Java日期运算

作者: qwfys | 来源:发表于2018-03-01 20:09 被阅读24次
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class DateUtil {

    public static String getCurrentTime() {
        SimpleDateFormat format = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
        format.applyPattern("yyyyMMddHHmmss");
        String timeStr = format.format(new Date());
        return timeStr;
    }

    public static String getCurrentTimestamp() {
        SimpleDateFormat format = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
        format.applyPattern("yyyy-MM-dd HH:mm:ss");
        String timeStr = format.format(new Date());
        return timeStr;
    }

    /****
     * 根据格式获取时间
     * 
     * @param formatStr
     *            如:“yyyy-MM-dd HH:mm:ss ”
     * @return
     */
    public static String getCurrentTimestamp(String formatStr) {
        SimpleDateFormat format = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
        format.applyPattern(formatStr);
        String timeStr = format.format(new Date());
        return timeStr;
    }

    /**
     * 将Timestamp转换成指定的日期格式
     * 
     * @param fomatStr
     *            如(yyyy年MM月dd日 HH:mm)
     * @param dateSource
     *            源日期(Timestamp)
     * @return
     */
    public static String getTimeByFomat(String fomatStr, Timestamp dateSource) {
        if (dateSource == null) {// 容错处理
            return "";
        }
        SimpleDateFormat format = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
        format.applyPattern(fomatStr);
        return format.format(dateSource);
    }

    /**
     * 将Date转换成指定的日期格式
     * 
     * @param fomatStr
     *            如(yyyy年MM月dd日 HH:mm)
     * @param dateSource
     *            源日期(Date)
     * @return
     */
    public static String getDateByFomat(String fomatStr, Date date) {
        if (date == null) {// 容错处理
            return "";
        }
        SimpleDateFormat format = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
        format.applyPattern(fomatStr);
        return format.format(date);
    }

    /**
     * 获取当前时间
     * 
     * @param date
     * @return
     */
    public static Date getCurrentDate() {
        return new Date(System.currentTimeMillis());
    }

    /**
     * 将时间置为23时59分钟59秒
     * 
     * @param date
     * @return
     */
    public static Calendar getFullPassDay(Calendar original) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(original.getTimeInMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar;
    }
    
    /**
     * 取给定时间对应的当天起始时间,即00:00:000 
     * 
     */
    public static Calendar getOriginOfDay(Calendar original) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(original.getTimeInMillis());
        calendar.set(Calendar.HOUR_OF_DAY,0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar;
    }

    /**
     * 将时间后退2小时
     * 
     * @param date
     * @return
     */
    public static Date getFallBack2Hour(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 2);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 将时间精确到小时
     * 
     * @param date
     * @return
     */
    public static Date getTimeHour(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取两个时间间隔的天数
     * 
     * @param date
     * @return
     */
    public static long getDiffDays(Date startDate, Date endDate) {
        long difftime = endDate.getTime() - startDate.getTime();
        return difftime / (24L * 60L * 60L * 1000L);
    }

    /**
     * 根据日期获取当天起始时间
     * 
     * @param date
     * @return
     */
    public static Date getStartDateOfCurrentDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 根据日期获取昨天起始时间
     * 
     * @param date
     * @return
     */
    public static Date getStartYesterday(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 根据日期获取下一天起始时间
     * 
     * @param date
     * @return
     */
    public static Date getStartDateOfNextDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 根据日期当前日期顺延一周后的起始时间
     * 
     * @param date
     * @return
     */
    public static Date getStartDateOfNextSevenDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, 7);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 根据日期当前日期顺延一周后的起始时间
     * 
     * @param date
     * @return
     */
    public static Date getStartDateOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 根据日期当前日期顺延一月后的起始时间
     * 
     * @param date
     * @return
     */
    public static Date getStartDateOfNextMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, 1);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 封装一天只能的时间区域
     * 
     * @param date
     * @return
     */
    public static List<Date> getStaticByDateDateArea(Date date) {
        List<Date> dates = new ArrayList<Date>();
        Date startdate = getStartDateOfCurrentDay(date);
        Date nextday = getStartDateOfNextDay(date);
        int step = 2;
        dates.add(startdate);
        for (int i = 1; i < 12; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startdate);
            calendar.add(Calendar.HOUR_OF_DAY, i * step);
            dates.add(calendar.getTime());
        }
        dates.add(nextday);
        return dates;
    }

    /**
     * 封装一周之内时间区域
     * 
     * @param date
     * @return
     */
    public static List<Date> getStaticByWeekDateArea(Date date) {
        List<Date> dates = new ArrayList<Date>();
        Date startdate = getStartDateOfCurrentDay(date);
        Date nextday = getStartDateOfNextSevenDay(date);
        dates.add(startdate);
        for (int i = 1; i < 7; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startdate);
            calendar.add(Calendar.DAY_OF_MONTH, i);
            dates.add(calendar.getTime());
        }
        dates.add(nextday);
        return dates;
    }

    /**
     * 封装一周之内时间区域List<String>
     * 
     * @param date
     * @return
     */
    public static List<String> getStaticByWeekLabel(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
        List<String> dates = new ArrayList<String>();
        Date startdate = getStartDateOfCurrentDay(date);
        dates.add(dateFormat.format(startdate));
        for (int i = 1; i < 7; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startdate);
            calendar.add(Calendar.DAY_OF_MONTH, i);
            dates.add(dateFormat.format(calendar.getTime()));
        }
        return dates;
    }

    /**
     * 封装一月之内时间区域
     * 
     * @param date
     * @return
     */
    public static List<Date> getStaticByMonthDateArea(Date date) {
        List<Date> dates = new ArrayList<Date>();
        Date startdate = getStartDateOfMonth(date);
        Date nextday = getStartDateOfNextMonth(date);
        long daydiff = getDiffDays(startdate, nextday);
        dates.add(startdate);
        for (int i = 1; i < daydiff; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startdate);
            calendar.add(Calendar.DAY_OF_MONTH, i);
            dates.add(calendar.getTime());
        }
        dates.add(nextday);
        return dates;
    }

    /**
     * 封装一点时间之内的时间区域(天)
     * 
     * @param startDate
     * @param endDate
     * @return
     */
    public static List<Date> getStaticBySE(Date startDate, Date endDate) {
        List<Date> dates = new ArrayList<Date>();

        long daydiff = getDiffDays(startDate, endDate);
        dates.add(startDate);
        for (int i = 1; i < daydiff; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startDate);
            calendar.add(Calendar.DAY_OF_MONTH, i);
            dates.add(calendar.getTime());
        }
        dates.add(endDate);
        return dates;
    }

    /**
     * 封装一月之内时间区域
     * 
     * @param date
     * @return
     */
    public static List<String> getStaticByMonthLabel(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd");
        List<String> dates = new ArrayList<String>();
        Date startdate = getStartDateOfMonth(date);
        Date nextday = getStartDateOfNextMonth(date);
        long daydiff = getDiffDays(startdate, nextday);
        dates.add(dateFormat.format(startdate));
        for (int i = 1; i < daydiff; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startdate);
            calendar.add(Calendar.DAY_OF_MONTH, i);
            dates.add(dateFormat.format(calendar.getTime()));
        }
        return dates;
    }

    /**
     * 封装一月之内时间区域
     * 
     * @param format
     * @param date
     * @return
     */
    public static String formatDate(String format, Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        return dateFormat.format(date);
    }
    
    /**
     * 取得当月第一天
     * 
     * @param date
     * @return
     */
    public static Calendar getFirstDayOfMonth(Calendar calendar) {
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(calendar.getTimeInMillis());
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal;
    }
    
    /**
     * 取得当月最后一天
     * 
     * @param date
     * @return
     */
    public static Calendar getLastDayOfMonth(Calendar calendar) {
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(calendar.getTimeInMillis());
        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.roll(Calendar.DAY_OF_MONTH, -1);
        return cal;
    }
    
    /**
     * 取得下月第一天
     * 
     * @param date
     * @return
     */
    public static Calendar getFirstDayOfNextMonth(Calendar calendar) {
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(calendar.getTimeInMillis());
        cal.add(Calendar.MONTH, 1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal;
    }
    
    /**
     * 取得下月最后一天
     * 
     * @param date
     * @return
     */
    public static Calendar getLastDayOfNextMonth(Calendar calendar) {
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(calendar.getTimeInMillis());
        cal.add(Calendar.MONTH, 1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.roll(Calendar.DAY_OF_MONTH, -1);
        return cal;
    }
    
    
}

相关文章

  • Java日期运算

  • python基础(四)----运算符

    一.算术运算符(基本同Java) 二.比较运算符(基本同Java) 三.赋值运算符(基本同Java) 四.位运算符...

  • JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一、概述 运算符是一种“功能”符号,用以通知 Java 进行相关的运算。 Java 语...

  • oracle日期函数的应用

    运算规律: 日期+数字=日期 日期—数字=日期 日期—日期=数字(天数) select s...

  • GregorianCalendar-java中日期的加减运算

    java中日期的加减运算 GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国...

  • Java的运算符

    Java有4大类运算符:算术运算、位运算、关系运算和逻辑运算。 运算符的优先级 模运算符 Java中,模运算符不止...

  • Kotlin——运算符和表达式

    与Java相同的运算符 Kotlin完全支持Java的运算符 Kotlin不支持Java的三目运算符——Kotli...

  • java基础知识

    title: java基础知识tags: [java基础知识] 位运算符 java种的运算符有 “&”,“|”,“...

  • Java基础知识3

    Java基础知识3 运算符 Java语言支持如下运算符 算术运算符:+,-,*,/,%模,取余数,++,-- 赋值...

  • Java判断与关系运算

    一、Java关系运算的种类 1、概述 Java还有提供了对两个量之间的关系进行比较的运算,称为关系运算。关系运算的...

网友评论

      本文标题:Java日期运算

      本文链接:https://www.haomeiwen.com/subject/vqpnxftx.html