`

dateutil

    博客分类:
  • java
 
阅读更多

package com.chinaums.common.util;

import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;

/**
 *
 * @author lee
 * @version 1.0
 * @Date 2007-4-26
 * @copyright huateng
 */
public class DateUtil {

    public static Timestamp addTimes(Timestamp time, int year, int month,
            int days, int hours, int minutes, int seconds) {
        if (time == null) {
            return null;
        }
        return new Timestamp(time.getYear() + year, time.getMonth() + month,
                time.getDate() + days, time.getHours() + hours, time
                        .getMinutes()
                        + minutes, time.getSeconds() + seconds, 0);
    }

    public static Timestamp addDays(Timestamp time, int days) {
        if (time == null) {
            return null;
        }
        return new Timestamp(time.getYear(), time.getMonth(), time.getDate()
                + days, time.getHours(), time.getMinutes(), time.getSeconds(),
                0);
    }

    /**
     * 将日期格式的字符串转换为日期类型
     *
     * @param dataString
     * @param format
     *            字符串的日期格式
     * @return
     */
    public static Date toDate(String dataString, String format) {
        if (dataString == null || dataString.equals("")) {
            return null;
        }
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        try {
            return new Date(myFormat.parse(dataString).getTime());
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将日期格式的字符串转换为日期类型。如果字符串的格式为"yyyy-MM-dd HH:mm:ss",则截取日期返回
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     * @param dataString
     * @return
     */
    public static Date toDate(String dataString) {
        if (dataString == null || dataString.equals("")) {
            return null;
        }
        if (dataString.length() > 10) {
            return toDate(dataString, "yyyy-MM-dd HH:mm:ss");
        } else {
            return toDate(dataString, "yyyy-MM-dd");
        }
    }

    /**
     * 将时间格式的字符串转换为时间类型
     *
     * @param timeString
     * @param format
     *            字符串的时间格式
     * @return
     */
    public static Timestamp toTime(String timeString, String format) {
        if (timeString == null || timeString.equals("")) {
            return null;
        }
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        try {
            return new Timestamp(myFormat.parse(timeString).getTime());
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将时间格式的字符串转换为时间类型。如果字符串的格式为"yyyy-MM-dd",则返回当日0点0分0秒的时间。
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     * @param timeString
     * @return
     */
    public static Timestamp toTime(String timeString) {
        if (timeString == null || timeString.equals("")) {
            return null;
        }
        if (timeString.length() > 10) {
            return toTime(timeString, "yyyy-MM-dd HH:mm:ss");
        } else {
            return toTime(timeString, "yyyy-MM-dd");
        }
    }

    /**
     * 如果字符串的格式是"yyyy-MM-dd",则返回当日0点0分0秒的时间;如果格式是"yyyy-MM-dd
     * HH:mm:ss",直接返回该字符串表示的时间
     *
     * @param dateString
     * @return
     */
    public static Timestamp getFirstTime(String dateString) {
        if (dateString == null || dateString.equals("")) {
            return null;
        }
        if (dateString.length() > 10) {
            return toTime(dateString, "yyyy-MM-dd HH:mm:ss");
        } else {
            return toTime(dateString, "yyyy-MM-dd");
        }
    }

    /**
     * 如果字符串的格式是"yyyy-MM-dd",则返回当日23点59分59秒的时间;如果格式是"yyyy-MM-dd
     * HH:mm:ss",直接返回该字符串表示的时间
     *
     * @param dateString
     * @return
     */
    public static Timestamp getLastTime(String dateString) {
        if (dateString == null || dateString.equals("")) {
            return null;
        }
        if (dateString.length() > 10) {
            return toTime(dateString, "yyyy-MM-dd HH:mm:ss");
        } else {
            Timestamp firstTime = getFirstTime(dateString);
            return new Timestamp(firstTime.getYear(), firstTime.getMonth(),
                    firstTime.getDate(), 23, 59, 59, 0);
        }

    }

    /**
     * 获取指定时间所在的日期
     *
     * @param time
     * @return
     */
    public static Date getDate(Timestamp time) {
        if (time == null) {
            return null;
        }
        return new Date(time.getTime());
    }

    /**
     * 获取指定日期的0点0分0秒的时间
     *
     * @param date
     * @return
     */
    public static Timestamp getFirstTime(Date date) {
        if (date == null) {
            return null;
        }
        return new Timestamp(date.getYear(), date.getMonth(), date.getDate(),
                0, 0, 0, 0);
    }

    /**
     * 获取指定日期的23点59分59秒的时间
     *
     * @param date
     * @return
     */
    public static Timestamp getLastTime(Date date) {
        if (date == null) {
            return null;
        }
        return new Timestamp(date.getYear(), date.getMonth(), date.getDate(),
                23, 59, 59, 0);
    }

    /**
     * 获取系统当前日期
     *
     * @return
     */
    public static Date getDate() {
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        String mystrdate = myFormat.format(calendar.getTime());
        return Date.valueOf(mystrdate);
    }

    /**
     * 获取系统当前时间
     *
     * @return
     */
    public static Timestamp getTime() {
        return new Timestamp(new java.util.Date().getTime());
    }
    
    /**
     * 获取14位系统当前时间
     *
     */
    public static String getSysTime14(){
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar = Calendar.getInstance();
        return myFormat.format(calendar.getTime());
    }
    /**
     * 判断指定的日期是否是当月最后一天
     *
     * @param date
     * @return
     */
    public static boolean isLastDateOfMonth(Date date) {
        if (date == null) {
            return false;
        }
        Date secdate = new Date(date.getYear(), date.getMonth(),
                date.getDate() + 1);
        if (secdate.getMonth() > date.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断指定的时间是否是当月最后一天
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     * @param time
     * @return
     */
    public static boolean isLastDateOfMonth(Timestamp time) {
        if (time == null) {
            return false;
        }
        Date secdate = new Date(time.getYear(), time.getMonth(),
                time.getDate() + 1);
        if (secdate.getMonth() > time.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断指定日期是否是当月第一天
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     * @param date
     * @return
     */
    public static boolean isFirstDateOfMonth(Date date) {
        if (date == null) {
            return false;
        }
        return date.getDate() == 1;
    }

    /**
     * 判断指定的时间是否是当月的第一天
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     * @param time
     * @return
     */
    public static boolean isFirstDateOfMonth(Timestamp time) {
        if (time == null) {
            return false;
        }
        return time.getDate() == 1;
    }

    /**
     * 获取指定的日期所在月份的第一天
     *
     * @param date
     * @return
     */
    public static Date getFirstDateOfMonth(Date date) {
        if (date == null) {
            return null;
        }
        return new Date(date.getYear(), date.getMonth(), 1);
    }

    /**
     * 获取指定的日期所在月份的最后一天
     *
     * @param date
     * @return
     */
    public static Date getLastDateOfMonth(Date date) {
        if (date == null) {
            return null;
        }
        return new Date(date.getYear(), date.getMonth(), getMonthDays(date
                .getYear(), date.getMonth()));
    }

    /**
     * 获取指定的时间所在月份的最后一天
     *
     * @param date
     * @return
     */
    public static Date getLastDateOfMonth(Timestamp time) {
        if (time == null) {
            return null;
        }
        return new Date(time.getYear(), time.getMonth(), getMonthDays(time
                .getYear(), time.getMonth()));
    }

    /**
     * 判断指定的日期是否是当季度的最后一天
     *
     * @param date
     * @return
     */
    public static boolean isLastDateOfSeason(Date date) {
        if (date == null) {
            return false;
        }
        Date secdate = new Date(date.getYear(), date.getMonth(),
                date.getDate() + 1);
        if (secdate.getMonth() != date.getMonth()
                && (date.getMonth() + 1) % 3 == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断指定的日期是否是当年的最后一天
     *
     * @param date
     * @return
     */
    public static boolean isLastDateOfYear(Date date) {
        if (date == null) {
            return false;
        }
        Date secdate = new Date(date.getYear(), date.getMonth(),
                date.getDate() + 1);
        return (secdate.getYear() > date.getYear());
    }

    /**
     * 判断指定日期是否在指定时间段内的第一个月份中
     *
     * @param date
     * @param beginTime
     *            时间段的开始时间
     * @param endTime
     *            时间段的结束时间
     * @return
     */
    public static boolean atFirstMonth(Date date, Timestamp beginTime,
            Timestamp endTime) {
        if (date == null) {
            return false;
        }
        if (date.getYear() == beginTime.getYear()
                && date.getMonth() == beginTime.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断指定日期是否在指定时间段内的最后一个月中
     *
     * @param date
     * @param beginTime
     *            时间段的开始时间
     * @param endTime
     *            时间段的结束时间
     * @return
     */
    public static boolean atLastMonth(Date date, Timestamp beginTime,
            Timestamp endTime) {
        if (date == null) {
            return false;
        }
        if (date.getYear() == endTime.getYear()
                && date.getMonth() == endTime.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断是否闰年
     * @param year
     * @return
     */
    public static boolean isLeapYear(int year) {
        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取指定年指定月份的天数
     * @param year
     * @param month
     * @return
     */
    public static int getMonthDays(int year, int month) {
        switch (month) {
        case 0:
        case 2:
        case 4:
        case 6:
        case 7:
        case 9:
        case 11:
            return 31;
        case 1:
            if (isLeapYear(1900 + year)) {
                return 29;
            } else {
                return 28;
            }
        case 3:
        case 5:
        case 8:
        case 10:
            return 30;
        }
        throw new RuntimeException("错误的月份");
    }

    /**
     * 获取指定日期在规定时间段内第一个月中的位置
     *
     * @param date
     * @param beginTime
     * @param endTime
     * @return
     */
    public static double firstMonthPercent(Date date, Timestamp beginTime,
            Timestamp endTime) {
        if (date == null) {
            return 0;
        }
        if (beginTime.getYear() == endTime.getYear()
                && beginTime.getMonth() == endTime.getMonth()) {
            return (double) (date.getDate() - beginTime.getDate())
                    / (double) (endTime.getDate() - beginTime.getDate());
        } else {
            return (double) (date.getDate() - beginTime.getDate())
                    / (double) getMonthDays(date.getYear(), date.getMonth());
        }
    }

    /**
     * 获取指定日期在规定时间段内最后一个月中的位置
     *
     * @param date
     * @param beginTime
     * @param endTime
     * @return
     */
    public static double lastMonthPercent(Date date, Timestamp beginTime,
            Timestamp endTime) {
        if (date == null) {
            return 0;
        }
        if (beginTime.getYear() == endTime.getYear()
                && beginTime.getMonth() == endTime.getMonth()) {
            return (double) (date.getDate() - beginTime.getDate())
                    / (double) (endTime.getDate() - beginTime.getDate());
        } else {
            return (double) endTime.getDate()
                    / (double) getMonthDays(date.getYear(), date.getMonth());
        }
    }

    /**
     * 判断指定日期是否在当月的15日以前
     *
     * @param date
     * @return
     */
    public static boolean beforeFifth(Date date) {
        if (date == null) {
            return false;
        }
        return date.getDate() < 15;
    }

    /**
     * 判断指定的时间是否在当月的15日以前
     *
     * @param time
     * @return
     */
    public static boolean beforeFifth(Timestamp time) {
        if (time == null) {
            return false;
        }
        return time.getDate() < 15;
    }

    /**
     * 获取两个日期之间间隔的天数
     *
     * @param endDate
     * @param beginDate
     * @return
     */
    public static long getDays(Date endDate, Date beginDate) {
        if (endDate == null || beginDate == null) {
            return 0;
        }
        long days = (endDate.getTime() - beginDate.getTime())
                / (24 * 60 * 60 * 1000);
        return days;
    }

    /**
     * 获取两个时间点之间间隔的天数
     *
     * @param endTime
     * @param beginTime
     * @return
     */
    public static long getDays(Timestamp endTime, Timestamp beginTime) {
        if (endTime == null || beginTime == null) {
            return 0;
        }
        long days = (endTime.getTime() - beginTime.getTime())
                / (24 * 60 * 60 * 1000);
        return days;
    }

    /**
     * 获取两个日期之间间隔的月数
     *
     * @param endDate
     * @param beginDate
     * @return
     */
    public static long getMonth(Date endDate, Date beginDate) {
        if (endDate == null || beginDate == null) {
            return 0;
        }
        if (endDate.compareTo(beginDate) <= 0) {
            return 0;
        } else {
            if (endDate.getYear() == beginDate.getYear()) {
                return endDate.getMonth() - beginDate.getMonth();
            } else {
                return (endDate.getYear() - beginDate.getYear() - 1) * 12
                        + (12 - beginDate.getMonth() - 1);
            }
        }
    }

    /**
     * 获取指定月份的第一天的0点0分0秒的时间
     *
     * @param month
     * @return
     */
    public static Timestamp getFirstTimeOfMonth(String month) {
        if (month == null || month.equals("")) {
            return null;
        }
        return toTime(month, "yyyyMM");
    }

    /**
     * 获取指定月份的最后一天的23点59分59秒的时间
     *
     * @param month
     * @return
     */
    public static Timestamp getLastTimeOfMonth(String month) {
        if (month == null || month.equals("")) {
            return null;
        }
        Timestamp firstTime = getFirstTimeOfMonth(month);
        return new Timestamp(
                firstTime.getYear(),
                firstTime.getMonth(),
                DateUtil
                        .getMonthDays(firstTime.getYear(), firstTime.getMonth()),
                23, 59, 59, 0);
    }

    /**
     * 获取指定日期的下一个日期
     *
     * @param date
     * @return
     */
    public static Date getNextDate(Date date) {
        if (date == null) {
            return null;
        }
        return new Date(date.getYear(), date.getMonth(), date.getDate() + 1);
    }

    /**
     * 判断两个日期是否在同一个月份
     *
     * @param date1
     * @param date2
     * @return
     */
    public static boolean inSameMonth(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            return false;
        }
        if (date1.getYear() == date2.getYear()
                && date1.getMonth() == date2.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断一个日期和一个时间是否在同月
     *
     * @param date
     * @param time
     * @return
     */
    public static boolean inSameMonth(Date date, Timestamp time) {
        if (date == null || time == null) {
            return false;
        }
        if (date.getYear() == time.getYear()
                && date.getMonth() == time.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断给定的两个时间是否在同月
     *
     * @param time1
     * @param time2
     * @return
     */
    public static boolean inSameMonth(Timestamp time1, Timestamp time2) {
        if (time1 == null || time2 == null) {
            return false;
        }
        if (time1.getYear() == time2.getYear()
                && time1.getMonth() == time2.getMonth()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断一个时间是否在指定的月份
     * @param time
     * @param month
     * @return
     */
    public static boolean inMonth(Timestamp time, String month) {
        if (time == null || month == null || month.equals("")) {
            return false;
        }
        String m = formatTime(time, "yyyyMM");
        return m.equals(month);
    }

    /**
     * 获取当前月份,格式yyyyMM
     *
     * @return
     */
    public static String getMonth() {
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyyMM");
        return myFormat.format(getDate());
    }

    /**
     * 获取指定月份的前一个月
     *
     * @return
     */
    public static String getPreviousMonth(String month) {
        Timestamp time = getFirstTimeOfMonth(month);
        time.setDate(time.getDate() - 1);
        return formatTime(time, "yyyyMM");
    }

    /**
     * 获取当前月的前一个月份
     *
     * @return
     */
    public static String getPreviousMonth() {
        Timestamp time = getFirstTimeOfMonth(getMonth());
        time.setDate(time.getDate() - 1);
        return formatTime(time, "yyyyMM");
    }
    
    /**
     * 获取距离现在间隔月份的时间
     */
    public static String getPointMonth(int interval){
        
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, interval); //得到某一个月
        
        
        return  formatDate(calendar.getTime(), "yyyyMM");
        
    }

    /**
     * 获取当前月的后一个月份
     *
     * @return
     */
    public static String getLastMonth() {
        Timestamp time = getLastTimeOfMonth(getMonth());
        time.setDate(time.getDate() + 1);
        return formatTime(time, "yyyyMM");
    }

    /**
     * 获取当前月份,格式MM
     *
     * @return
     */
    public static String getMMMonth() {
        SimpleDateFormat myFormat = new SimpleDateFormat("MM");
        return myFormat.format(getDate());
    }

    /**
     * 获取当前年份,格式yyyy
     *
     * @return
     */
    public static String getYYYYYear() {
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyy");
        return myFormat.format(getDate());
    }

    /**
     * 获取当前年份,格式yy
     *
     * @return
     */
    public static String getYYYear() {
        SimpleDateFormat myFormat = new SimpleDateFormat("yy");
        return myFormat.format(getDate());
    }

    /**
     * 获取指定月份的第一天日期
     *
     * @param month
     * @return
     */
    public static Date getFirstDateOfMonth(String month) {
        if (month == null || month.equals("")) {
            return null;
        }
        return toDate(month, "yyyyMM");
    }

    /**
     * 获取指定月份的最后一天日期
     *
     * @param month
     * @return
     */
    public static Date getLastDateOfMonth(String month) {
        if (month == null || month.equals("")) {
            return null;
        }
        Date date = getFirstDateOfMonth(month);
        return new Date(date.getYear(), date.getMonth(), getMonthDays(date
                .getYear(), date.getMonth()));
    }

    /**
     * 判断指定日期是否在两个时间范围内
     *
     * @param date
     * @param beginTime
     * @param endTime
     * @return
     */
    public static boolean between(Date date, Timestamp beginTime,
            Timestamp endTime) {
        if (date.before(getDate(endTime)) && date.after(getDate(beginTime))) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断指定时间是否在两个时间范围内
     *
     * @param time
     * @param beginTime
     * @param endTime
     * @return
     */
    public static boolean between(Timestamp time, Timestamp beginTime,
            Timestamp endTime) {
        if (time.before(endTime) && time.after(beginTime)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 将日期段分割成自然月
     *
     * @param fromDate
     * @param toDate
     * @return
     */
    public static String[] getMonths(Date fromDate, Date toDate) {
        List<String> months = new ArrayList<String>();
        int fromYear = 1900 + fromDate.getYear();
        int fromMonth = fromDate.getMonth() + 1;
        int toYear = 1900 + toDate.getYear();
        int toMonth = toDate.getMonth() + 1;
        for (int i = fromYear; i < toYear; i++) {
            if (i == fromYear) {
                for (int j = fromMonth; j <= 12; j++) {
                    months.add("" + i + convertMonth(j));
                }
            } else {
                for (int j = 1; j <= 12; j++) {
                    months.add("" + i + convertMonth(j));
                }
            }
        }
        if (fromYear == toYear) {
            for (int i = fromMonth; i <= toMonth; i++) {
                months.add("" + toYear + convertMonth(i));
            }
        } else {
            for (int i = 1; i <= toMonth; i++) {
                months.add("" + toYear + convertMonth(i));
            }
        }
        String[] mon = new String[months.size()];
        int n = 0;
        for (Iterator<String> i = months.iterator(); i.hasNext();) {
            mon[n++] = i.next();
        }
        return mon;
    }

    /**
     * 将整数表示的月份转成成字符串型
     *
     * @param month
     * @return
     */
    private static String convertMonth(int month) {
        if (month < 10) {
            return "0" + month;
        } else {
            return "" + month;
        }
    }

    /**
     * 将日期转换为yyyyMMdd格式的字符串
     *
     * @param date
     * @return
     */
    public static String formatDate(Date date) {
        if (date == null) {
            return "";
        }
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyyMMdd");
        return myFormat.format(date);
    }

    /**
     * 将日期转换为指定格式的字符串
     *
     * @param date
     * @param format
     * @return
     */
    public static String formatDate(Date date, String format) {
        if (date == null) {
            return "";
        }
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        return myFormat.format(date);
    }

    /**
     * 将时间转换为yyyyMMdd HH:mm:ss格式的字符串
     *
     * @param time
     * @return
     */
    public static String formatTime(Timestamp time) {
        if (time == null) {
            return "";
        }
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        return myFormat.format(time);
    }

    /**
     * 将时间转换为指定格式的字符串
     *
     * @param time
     * @param format
     * @return
     */
    public static String formatTime(Timestamp time, String format) {
        if (time == null) {
            return "";
        }
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        return myFormat.format(time);
    }

    /**
     * 获取当前时间的前一秒时间
     *
     * @param time
     * @return
     */
    public static Timestamp getPrevTime(Timestamp time) {
        return new Timestamp(time.getYear(), time.getMonth(), time.getDate(),
                time.getHours(), time.getMinutes(), time.getSeconds() - 1, 0);
    }

    /**
     * 将时间转换为长整型
     *
     * @param time
     * @return
     */
    public static long toLong(Timestamp time) {
        return time.getTime();
    }

    /**
     * 将两个时间相减,得出半小时为单位的时间差
     *
     * @param time1
     * @param time2
     * @return
     */
    public static double subHalfHour(Timestamp time1, Timestamp time2) {
        if (time1 == null || time2 == null) {
            return 0;
        }
        return NumberUtil.round(
                (double) (time1.getTime() - time2.getTime()) / 1800000, 2);
    }

    /**
     * 将两个时间相减,得出半小时为单位的时间差
     *
     * @param time1
     * @param time2
     * @return
     */
    public static double subQuatorHour(Timestamp time1, Timestamp time2) {
        if (time1 == null || time2 == null) {
            return 0;
        }
        return NumberUtil.round(
                (double) (time1.getTime() - time2.getTime()) / 900000, 2);
    }

    /**
     * 将两个时间相减,得出小时为单位的时间差
     *
     * @param time1
     * @param time2
     * @return
     */
    public static double subHour(Timestamp time1, Timestamp time2) {
        if (time1 == null || time2 == null) {
            return 0;
        }
        return NumberUtil.round(
                (double) (time1.getTime() - time2.getTime()) / 3600000, 2);
    }

    // select extract(day from end_time-begin_time)*24+extract(hour from
    // end_time-begin_time)+extract(minute from end_time-begin_time)/60 into
    // hours from dual;

    public static String getDateString(Timestamp time) {
        SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
        String mystrdate = myFormat.format(time);
        return mystrdate;
    }

    public static String getTimestampString(Timestamp time, String format) {
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        String mystrdate = myFormat.format(time);
        return mystrdate;
    }

    public static String getMonthByMMM(String MMM) {
        String[] monthList = { "jan", "feb", "mar", "apr", "may", "jun", "jul",
                "aug", "sep", "oct", "nov", "dec" };
        String month = "01";
        for (int i = 0; i < 12; i++) {
            if (monthList[i].equalsIgnoreCase(MMM))
                month = "0" + (i + 1);
        }
        return month.substring(month.length() - 2);
    }

    public static Timestamp addMonths(Timestamp time, int months) {
        if (time == null) {
            return null;
        }
        return new Timestamp(time.getYear(), time.getMonth() + months, time
                .getDate(), time.getHours(), time.getMinutes(), time
                .getSeconds(), 0);
    }

    public static void main(String[] args) throws Exception {
        try {
//            Timestamp t = DateUtil.getTime();
//            System.out.println(getPointMonth(-3));
//            System.out.println(DateUtil.formatTime(t, "yyyyMMdd HH:mm"));
            
//            SimpleDateFormat sdf = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
//            sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
//            System.out.println(sdf.format(0));
            
//            String str = "201104141302";
//            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmm");
//            long millionSeconds = sdf.parse(str).getTime();// 毫秒
//
//            System.out.println(millionSeconds);
            
//            1302757320000
            
            System.out.println(DateUtil.formatDate(System.currentTimeMillis(), "yyyy-MM-dd 00:00:00"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @param createTime
     * @param format
     * @return
     */
    public static String formatDate(java.util.Date createTime, String format) {
        // TODO Auto-generated method stub
        if (createTime == null) {
            return "";
        }
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        return myFormat.format(createTime);

    }
    
    public static String formatDate(Long curr, String format){
        if(curr==0) return "0";
        SimpleDateFormat sdf = new SimpleDateFormat("", Locale.SIMPLIFIED_CHINESE);
        //sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
        sdf.applyPattern(format);
        return sdf.format(curr);
    }


    /**
     * 将日期格式的字符串转换为日期类型
     *
     * @param dataString
     * @param format
     *            字符串的日期格式
     * @return
     */
    public static java.util.Date toUtilDate(String dataString, String format) {
        return toUtilDate(dataString, format, null);
    }
    
    /**
     * 将日期格式的字符串转换为日期类型
     *
     * @param dataString
     * @param format
     *            字符串的日期格式
     * @return
     */
    public static java.util.Date toUtilDate(String dataString, String format, java.util.Date def) {
        if (dataString == null || dataString.equals("")) {
            return def;
        }
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        try {
            return new java.util.Date(myFormat.parse(dataString).getTime());
        } catch (Exception e) {
            e.printStackTrace();
            return def;
        }
    }
    
    
    /**
     * 功能: 将字符串转换为指定格式的日期返回
     * @param dateStr        要转换的字符串
     * @param format        目标日期格式
     * @return
     */
    public static java.util.Date formatStrToDate(String dateStr, String format) {
        if(dateStr == null || "".equals(dateStr)){
            return null;
        }
        SimpleDateFormat sdf1 = new SimpleDateFormat(format);
        java.util.Date date = null;
        try {
            date = sdf1.parse(dateStr);
        } catch(Exception e) {
            e.printStackTrace();
            return null;
        }
        return date;
    }
    
      /**
       * 功能:字符串转换为Date
       */
      public static java.util.Date formatStrToDate(String strdate) throws Exception {
          String str = strdate.replace("-", "");
          java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyyMMdd");
          return formatter.parse(str);

      }
    
    
    /**
     * 获取当前年份,格式format, 默认yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String getStrDate() {
        return getStrDate("yyyy-MM-dd HH:mm:ss");
    }
    /**
     * 获取当前年份,格式format, 默认yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String getStrDate(String format) {
        if(null == format || "".equals(format)) format = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        return myFormat.format(new java.util.Date());
    }
    
    /**
     * 获取当前年份,格式format, 默认yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String getStrDate(Timestamp date, String format) {
        if(null == format || "".equals(format)) format = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat myFormat = new SimpleDateFormat(format);
        return myFormat.format(date);
    }
    
    /**
     * 比较两个字符串时间的大小 不取结果的绝对值
     *
     * @param t1
     *            时间1
     * @param t2
     *            时间2
     * @param parrten
     *            时间格式 :yyyy-MM-dd HH:mm:ss
     * @return 返回long =0相等,>0 t1>t2,<0 t1<t2
     */
    public static long compareStringTimeEx(String t1, String t2, String parrten) {
        SimpleDateFormat formatter = new SimpleDateFormat(parrten);
        long startT = 0;
        long endT = 0;
        try {
            startT = formatter.parse(t1).getTime();
            endT = formatter.parse(t2).getTime();

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        long ss = (startT - endT) / (1000); // 共计秒数
        return ss;

    }
}

分享到:
评论

相关推荐

    DateUtil(日期工具类)

    在Java编程语言中,`DateUtil`通常是一个自定义的工具类,用于处理与日期和时间相关的操作。这个工具类可以极大地简化日期处理任务,提供比Java内置的`java.util.Date`和`java.time`包更友好的API。在本文中,我们将...

    PyPI 官网下载 | types-python-dateutil-0.1.4.tar.gz

    标题中的"PyPI 官网下载 | types-python-dateutil-0.1.4.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`types-python-dateutil`,版本为0.1.4,其打包形式是tar.gz。PyPI是Python社区广泛...

    DateUtil(通用日期工具类)

    在Java编程中,DateUtil是一个常见的工具类,用于处理日期和时间相关的操作。这个类通常包含了一系列静态方法,便于开发者进行日期格式化、日期比较、日期计算等常见任务。下面我们将详细探讨DateUtil中的关键知识点...

    python dateutil模块 64位

    Python的`dateutil`模块是Python编程中处理日期和时间的一个强大工具,尤其适用于解析不规则的日期字符串和处理各种时间间隔。在64位操作系统上使用时,它提供了与32位系统相同的功能,但可以处理更大的数据范围。本...

    dateutil模块包

    Python的`dateutil`模块是Python标准库`datetime`模块的一个强大扩展,它提供了一系列高级的时间解析和计算功能。在OpenERP7(现称为Odoo7)开发中,`dateutil`模块扮演了重要的角色,因为它能帮助开发者处理复杂的...

    日期处理工具DateUtil

    `DateUtil`类通常被设计为一个工具类,用于提供方便、高效和灵活的日期处理功能。这个类集成了多种方法,帮助开发者进行日期格式化、获取当前时间等操作。下面我们将深入探讨`DateUtil`类可能包含的一些核心知识点。...

    DateUtil日期工具类

    DateUtil 日期工具类

    python包dateUtil和pyparsing

    在处理日期和时间以及解析复杂字符串时,Python提供了多个工具包,其中“dateUtil”和“pyparsing”是两个非常实用的库。 “dateUtil”库,全称为“python-dateutil”,是一个强大的扩展,用于处理日期和时间。它...

    numpy+matplotlib+six+dateutil+pytz+pyparsing.zip

    标题中的"numpy+matplotlib+six+dateutil+pytz+pyparsing.zip"是一个包含多个Python第三方库的压缩包,适用于Python 2.7版本,并且是针对Windows 7 64位系统的。这个压缩包里的每个子文件都是一个单独的安装程序,...

    python-dateutil-2.8.0.tar

    python源码安装包python-dateutil-2.8.0.tar,解压后 python setup.py install进行安装.

    Java DateUtil时间工具类

    Java中的DateUtil时间工具类是开发者在处理日期和时间时常用的一个自定义工具类。它通常包含了一系列静态方法,用于简化Java内置的日期和时间API的使用,提高代码的可读性和可维护性。在实际开发中,由于Java 8之前...

    python_dateutil-2.6.0-py2.py3-none-any.whl

    dateutil模块

    python-dateutil-2.2.win32-py2.7.exe

    python-dateutil-2.2.win32-py2.7.exe,python-dateutil-2.2.win32-py2.7.exe

    Python项目开发实战_dateutil模块-轻松计算日期_编程案例解析实例详解课程教程.pdf

    Python 项目开发实战 - dateutil 模块轻松计算日期 本文将详细介绍使用 dateutil 模块来简化日期计算的过程。日期计算是大部分系统都需要用到的,但它的计算比较复杂,因此很容易出现 Bug。开发高品质软件时要尽量...

    python-dateutil-2.5.0

    Python的`dateutil`库是处理日期和时间的利器,特别是其`parser`模块,能够灵活地解析各种格式的日期字符串。在版本2.5.0中,这个库提供了强大的功能,使得开发者在处理日期相关的任务时更加方便。在这个版本中,...

    Android-Java中的日期转化格式DateUtil工具类

    这里我们关注的是`DateUtil`工具类,它专门用于处理日期转换格式的操作。`DateUtil`工具类通常包含了对日期进行格式化、解析、比较等常用功能,使得在Android项目中处理日期变得更加便捷。 在Java中,日期对象主要...

    python3.4 matplotlib依赖的dateutil、numpy

    在Python 3.4版本中,`matplotlib`依赖于两个关键库:`dateutil`和`numpy`。这两个库分别提供了高级日期和时间处理功能以及强大的数值计算能力。 `numpy`(Numerical Python)是Python科学计算的核心库,它引入了...

    Java - DateUtil 日期时间转换工具类

    资源名称:DateUtil 日期时间转换工具类 内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关...

    python_dateutil-2.8.0-py2.py3-none-any.whl

    python_dateutil-2.8.0-py2.py3-none-any.whl

    日期时间处理类(DateUtil)

    本文将深入探讨一个名为`DateUtil`的工具类,它为开发者提供了便利的方法来处理日期时间。`DateUtil`通常由开发者自定义,包含一系列静态方法,以简化日期时间操作。以下是对`DateUtil`类可能包含的一些核心功能的...

Global site tag (gtag.js) - Google Analytics