java 日期的一系列操作

package csdn.shimiso.eim.util;

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

public class TimestampTool {

/** 
 * 将毫秒转成时间   2015-04-10 15:53:44
 */
public static String getTimeMillisToDate(long l) {
    Timestamp d = new Timestamp(l);
    return d.toString().substring(0, 19);  // 字符串剪切 0-19 
}


/**
 * 当前时间
 * 
 * @return Timestamp   2015-04-10 15:55:04.051
 * System.currentTimeMillis() 得到的是毫秒数
 */
public static Timestamp crunttime() {
    return new Timestamp(System.currentTimeMillis());
}



/**
 * 获取当前时间的字符串
 * 
 * @return String ex:2006-07-07
 */
public static String getCurrentDate() {
    Timestamp d = crunttime();
    return d.toString().substring(0, 10);
}

/**
 * 获取当前时间的字符串
 * 
 * @return String ex:2006-07-07 22:10:10
 */
public static String getCurrentDateTime() {
    Timestamp d = crunttime();
    return d.toString().substring(0, 19);
}

public static String getWeekDay() {
    Calendar date = Calendar.getInstance();  // 实例化日期
    date.setTime(crunttime());  // 设置日期 ,其实不用设置也可
    return new SimpleDateFormat("EEE").format(date.getTime());
    // 利用simpleDateFormat按照一定的格式输出   yyyy-MM-dd EEE HH:mm:ss.SSS
}


/**
 * 获取指定时间的字符串,只到日期
 * 
 * @param t
 *            Timestamp
 * @return String ex:2006-07-07
 */
public static String getStrDate(Timestamp t) {
    return t.toString().substring(0, 10);
}

/**
 * 获取指定时间的字符串
 * 
 * @param t
 *            Timestamp
 * @return String ex:2006-07-07 22:10:10
 */
public static String getStrDateTime(Timestamp t) {
    return t.toString().substring(0, 19);
}

/**
 * 获得当前日期的前段日期
 * 
 * @param days
 * @return String
 */
public static String getStrIntervalDate(String days) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -Integer.parseInt(days));
    String strBeforeDays = sdf.format(cal.getTime());
    return strBeforeDays;
}




/**
 * 格式化时间
 * 
 * @param dt
 *            String -> yyyy-MM-dd hh:mm:ss
 * @return java.util.Date.Date -> yyyy-MM-dd hh:mm:ss
 */
public static Date parseDateTime(String dt) {
    Date jDt = new Date();
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (dt.length() > 10) {
            jDt = sdf.parse(dt); // 转化 ,是时间用format()
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return jDt;
}

/**
 * 格式化时间yyyy-MM-dd HH:mm:ss
 * 
 * @param date
 *            java.util.Date
 * @return String -> yyyy-MM-dd HH:mm:ss
 */
public static String parseDateTime(Date date) {
    String s = null;
    if (date != null) {
        try {
            SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            s = f.format(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return s;
}

/**
 * 格式化日期
 * 
 * @param dt
 *            String -> yyyy-MM-dd
 * @return java.util.Date.Date -> yyyy-MM-dd
 */
public static Date parseDate(String dt) {
    Date jDt = new Date();
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if (dt.length() >= 8) {
            jDt = sdf.parse(dt);
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return jDt;
}

/**
 * 格式化时间yyyy-MM-dd
 * 
 * @param date
 *            java.util.Date
 * @return String -> yyyy-MM-dd
 */
public static String parseDate(Date date) {
    String s = null;
    try {
        if (date != null) {
            SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
            s = f.format(date);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return s;
}


/**
 * 
 * @param dateStr
 * @return String
 */
public static String formatDateToHHMM(String dateStr) {
    String resultDate = null;
    try {
        if (dateStr.length() > 10) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:ss");
            Date date = sdf.parse(dateStr);
            resultDate = sdf.format(date);
        } else
            resultDate = dateStr;
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return resultDate;
}

/**
 * 返回日期 格式:2006-07-05
 * 
 * @param str
 * @return Timestamp
 */
public static Timestamp date(String str) {
    Timestamp tp = null;
    if (str.length() <= 10) {
        String[] string = str.trim().split("-");
        int one = Integer.parseInt(string[0]) - 1900;
        int two = Integer.parseInt(string[1]) - 1;
        int three = Integer.parseInt(string[2]);
        tp = new Timestamp(one, two, three, 0, 0, 0, 0);
    }
    return tp;
}

// 获取指定日期之后的日期字符串 如 2007-04-15 后一天 就是 2007-04-16
public static String getNextDay(String strDate, int day) {
    if (strDate != null && !strDate.equals("")) {
        Calendar cal1 = Calendar.getInstance();
        String[] string = strDate.trim().split("-");
        int one = Integer.parseInt(string[0]) - 1900;
        int two = Integer.parseInt(string[1]) - 1;
        int three = Integer.parseInt(string[2]);
        cal1.setTime(new Date(one, two, three));
        cal1.add(Calendar.DAY_OF_MONTH, day);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        return formatter.format(cal1.getTime());
    } else {
        return null;
    }

}

// 获取指定日期之后的日期字符串 如 2007-02-28 后一年 就是 2008-02-29 (含闰年)
public static String getNextYear(String strDate, int year) {
    Calendar cal1 = Calendar.getInstance();
    String[] string = strDate.trim().split("-");
    int one = Integer.parseInt(string[0]) - 1900;
    int two = Integer.parseInt(string[1]) - 1;
    int three = Integer.parseInt(string[2]);
    cal1.setTime(new Date(one, two, three));
    cal1.add(Calendar.YEAR, year);
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    return formatter.format(cal1.getTime());
}

/**
 * 返回时间和日期 格式:2006-07-05 22:10:10
 * 
 * @param str
 * @return Timestamp
 */
public static Timestamp datetime(String str) {
    Timestamp tp = null;
    if (str != null && str.length() > 10) {
        String[] string = str.trim().split(" ");
        String[] date = string[0].split("-");
        String[] time = string[1].split(":");
        int date1 = Integer.parseInt(date[0]) - 1900;
        int date2 = Integer.parseInt(date[1]) - 1;
        int date3 = Integer.parseInt(date[2]);
        int time1 = Integer.parseInt(time[0]);
        int time2 = Integer.parseInt(time[1]);
        int time3 = Integer.parseInt(time[2]);
        tp = new Timestamp(date1, date2, date3, time1, time2, time3, 0);
    }
    return tp;
}

/**
 * 返回日期和时间(没有秒) 格式:2006-07-05 22:10
 * 
 * @param str
 * @return Timestamp
 */
public static Timestamp datetimeHm(String str) {
    Timestamp tp = null;
    if (str.length() > 10) {
        String[] string = str.trim().split(" ");
        String[] date = string[0].split("-");
        String[] time = string[1].split(":");
        int date1 = Integer.parseInt(date[0]) - 1900;
        int date2 = Integer.parseInt(date[1]) - 1;
        int date3 = Integer.parseInt(date[2]);
        int time1 = Integer.parseInt(time[0]);
        int time2 = Integer.parseInt(time[1]);
        tp = new Timestamp(date1, date2, date3, time1, time2, 0, 0);
    }
    return tp;
}

/**
 * 获得当前系统日期与本周一相差的天数
 * 
 * @return int
 */
private static int getMondayPlus() {
    Calendar calendar = Calendar.getInstance();
    // 获得今天是一周的第几天,正常顺序是星期日是第一天,星期一是第二天......
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 星期日是第一天
    return (dayOfWeek == 1) ? -6 :2-dayOfWeek;
}


/**
 * 获得距当前时间所在某星期的周一的日期 例: 0-本周周一日期 -1-上周周一日期 1-下周周一日期
 * 
 * @param week
 *            int
 * @return java.util.Date
 */
public static Date getMondayOfWeek(int week) {
    int mondayPlus = getMondayPlus(); // 相距周一的天数差
    GregorianCalendar current = new GregorianCalendar();
    current.add(GregorianCalendar.DATE, mondayPlus + 7 * week);
    return current.getTime();
}

/**
 * 获得某日前后的某一天
 * 
 * @param date
 *            java.util.Date
 * @param day
 *            int
 * @return java.util.Date
 */
public static Date getDay(Date date, int day) {
    GregorianCalendar c = new GregorianCalendar();
    c.setTime(date);
    c.add(GregorianCalendar.DATE, day);
    return c.getTime();
}

/**
 * 获得距当前周的前后某一周的日期
 * 
 * @param week
 *            int
 * @return String[]
 */
public static String[] getDaysOfWeek(int week) {
    String[] days = new String[7];
    Date monday = getMondayOfWeek(week); // 获得距本周前或后的某周周一
    Timestamp t = new Timestamp(monday.getTime());
    days[0] = getStrDate(t);
    for (int i = 1; i < 7; i++) {
        t = new Timestamp(getDay(monday, i).getTime());
        days[i] = getStrDate(t);
    }
    return days;
}

/***
 * MCC的UTC时间转换,MCC的UTC不是到毫秒的
 * 
 * @param utc
 * @return java.util.Date
 */
public static Date mccUTC2Date(long utc) {
    Date d = new Date();
    d.setTime(utc * 1000); // 转成毫秒
    return d;
}

// 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
public static Date strToDateLong(String strDate) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = (Date) formatter.parse(strDate, pos);
    if (strtodate == null) {
        formatter = new SimpleDateFormat("yyyy-MM-dd");
        strtodate = (Date) formatter.parse(strDate, pos);
    }
    return strtodate;
}

// 将 yyyy-MM-dd HH:mm 格式字符串转换为时间
public static Date strToDateTime(String strDate) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = (Date) formatter.parse(strDate, pos);
    if (strtodate == null) {
        formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        strtodate = (Date) formatter.parse(strDate, pos);
    }
    return strtodate;
}

// 根据输入的字符串返回日期字符串 2006-07-07 22:10 2006-07-07
public static String getStrDate(String str) {
    if (str.length() > 10) {
        String[] string = str.trim().split(" ");
        return string[0];
    } else {
        return getCurrentDate();
    }
}

// 获取当前时间的字符串 2006-07-07 22:10:10 2006-07-07_221010
public static String getStrDateTime() {
    Timestamp d = crunttime();
    return d.toString().substring(0, 19).replace(":", "").replace(" ", "_");
}

// 根据日期字符串,返回今天,昨天或日期
public static String getDayOrDate(String str) {
    if (str != null && !str.equals("")) {
        if (getNextDay(str, 0).equals(getCurrentDate())) {
            str = "今天";
        } else if (getNextDay(str, 1).equals(getCurrentDate())) {
            str = "昨天";
        }
    }
    return str;
}

// 返回当前日期所在星期,2对应星期一
public static int getMonOfWeek() {
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(new Date());
    return cal1.get(Calendar.DAY_OF_WEEK);
}


/**
 * 获取当前日期之前的日期字符串 如 2007-04-15 前5月 就是 2006-11-15
 */
public static String getPreviousMonth(int month) {
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(new Date());
    cal1.add(Calendar.MONTH, -month);
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    return formatter.format(cal1.getTime());

}

public static String getStrYear(int year) {
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(new Date());
    cal1.add(Calendar.YEAR, -year);
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
    return formatter.format(cal1.getTime()) + "年份";
}

/**
 * 比较两个日期前后 可以大于或等于
 * 
 * @param starDate
 * @param endDate
 * @return
 */
public static boolean compareTwoDays(String starDate, String endDate) {
    Calendar cal_start = Calendar.getInstance();
    Calendar cal_end = Calendar.getInstance();
    cal_start.setTime(parseDate(starDate));
    cal_end.setTime(parseDate(endDate));
    return cal_end.after(cal_start);
}

public static int getDaysBetween(java.util.Calendar d1,
        java.util.Calendar d2) {
    if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
        java.util.Calendar swap = d1;
        d1 = d2;
        d2 = swap;
    }
    int days = d2.get(java.util.Calendar.DAY_OF_YEAR)
            - d1.get(java.util.Calendar.DAY_OF_YEAR);
    int y2 = d2.get(java.util.Calendar.YEAR);
    if (d1.get(java.util.Calendar.YEAR) != y2) {
        d1 = (java.util.Calendar) d1.clone();
        do {
            days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
            d1.add(java.util.Calendar.YEAR, 1);
        } while (d1.get(java.util.Calendar.YEAR) != y2);
    }
    return days;
}

// 得到两个日期之间的年
public static int dateDiffYear(String starDate, String endDate) {
    int result = 0;
    Calendar d1 = Calendar.getInstance();
    Calendar d2 = Calendar.getInstance();
    d1.setTime(parseDate(starDate));
    d2.setTime(parseDate(endDate));

    // 日期大小翻转
    if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
        java.util.Calendar swap = d1;
        d1 = d2;
        d2 = swap;
    }
    int yy = d2.get(Calendar.YEAR) - d1.get(Calendar.YEAR);
    int mm = d2.get(Calendar.MONTH) - d1.get(Calendar.MONTH);
    if (mm < 0) {
        result = yy - 1;
    }
    if (mm > 0) {
        result = yy;
    }
    if (mm == 0) {
        if ((d2.getTimeInMillis() - d1.getTimeInMillis()) >= 0) {
            result = yy;
        } else {
            result = yy - 1;
        }
    }
    return result;
}

// 获取年龄
public static int getAgeByBirth(String starDate) {
    return dateDiffYear(starDate, getCurrentDate());
}

}

package csdn.shimiso.eim.util;

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

/**
* 日期操作工具类.
*
*
*/

public class DateUtil {

private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";

public static Date str2Date(String str) {
    return str2Date(str, null);
}

public static Date str2Date(String str, String format) {
    if (str == null || str.length() == 0) {
        return null;
    }
    if (format == null || format.length() == 0) {
        format = FORMAT;
    }
    Date date = null;
    try {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        date = sdf.parse(str);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return date;

}

public static Calendar str2Calendar(String str) {
    return str2Calendar(str, null);

}

public static Calendar str2Calendar(String str, String format) {

    Date date = str2Date(str, format);
    if (date == null) {
        return null;
    }
    Calendar c = Calendar.getInstance();
    c.setTime(date);

    return c;

}

public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss
    return date2Str(c, null);
}

public static String date2Str(Calendar c, String format) {
    if (c == null) {
        return null;
    }
    return date2Str(c.getTime(), format);
}

public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss
    return date2Str(d, null);
}

public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss
    if (d == null) {
        return null;
    }
    if (format == null || format.length() == 0) {
        format = FORMAT;
    }
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    String s = sdf.format(d);
    return s;
}

public static String getCurDateStr() {
    Calendar c = Calendar.getInstance();
    c.setTime(new Date());
    return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-"
            + c.get(Calendar.DAY_OF_MONTH) + "-"
            + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE)
            + ":" + c.get(Calendar.SECOND);
}

/**
 * 获得当前日期的字符串格式
 * 
 * @param format
 * @return
 */
public static String getCurDateStr(String format) {
    Calendar c = Calendar.getInstance();
    return date2Str(c, format);
}

// 格式到秒
public static String getMillon(long time) {

    return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);

}

// 格式到天
public static String getDay(long time) {

    return new SimpleDateFormat("yyyy-MM-dd").format(time);

}

// 格式到毫秒
public static String getSMillon(long time) {

    return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值