常用日期工具类

常用日期工具类

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

import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;

/**
 * 常用日期工具类
 * @author changbingbing
 *
 */
public class DateUtils {
    public static final String FORMAT_DATE_TIME_DEFAULT="yyyy-MM-dd HH:mm:ss";//默认的年月日时分秒格式
    public static final String FORMAT_DATE_FOR_BORROWS="yyMMdd";//借款主键的年月日格式
    public static final String FORMAT_DATE_FOR_DAY="yyyy-MM-dd";//一般的天格式
    public static final String FORMAT_DATE_FOR_YMD000="yyyy-MM-dd 00:00:00";//yyyy-MM-dd 00:00:00
    public static final String FORMAT_DATE_CH="yyyy年MM月dd日";
    public static final String FORMAT_DATE_D="d";

 格式化指定日期(java.util.Date)

/**
     * 
     * @Title: formatDate
     * @Description:格式化指定日期(java.util.Date)
     * @param format
     * @param date
     * @return
     * @Return: String
     *
     */
    public static String formatDate(String format, Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

 格式化指定日期(org.joda.time.DateTime)

/**
     * 格式化指定日期(org.joda.time.DateTime)
     * @param format
     * @param dateTime
     * @return
     */
    public static String formatDateTime(String format, DateTime dateTime) {
        return dateTime.toString(format);
    }

 格式化时间戳(java.sql.Timestamp)

/**
     * 
     * @Title: formatTimeStamp
     * @Description:格式化时间戳(java.sql.Timestamp)
     * @param format
     * @param tm
     * @return
     * @Return: String
     *
     */
    public static String formatTimeStamp(String format, Timestamp tm) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(new Date(tm.getTime()));
    }

 字符串转化成日期(java.util.Date)

/**
     * 
     * @Title: parseDate
     * @Description:字符串转化成日期(java.util.Date)
     * @param format
     * @param dateStr
     * @return
     * @Return: Date
     *
     */
    public static Date parseDate(String format, String dateStr) {
        Date dateResult = null;
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            dateResult = sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateResult;
    }

 字符串转化成日期(org.joda.time.DateTime)

/**
     * 字符串转化成日期(org.joda.time.DateTime)
     * @param format
     * @param dateStr
     * @return
     */
    public static DateTime parseDateTime(String format, String dateStr) {
        DateTime parseDateTime = null;
        try {
            parseDateTime = DateTimeFormat.forPattern(format).parseDateTime(dateStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return parseDateTime;
    }

 字符串转化成日期2(org.joda.time.DateTime)

/**
     * 字符串转化成日期2(org.joda.time.DateTime)
     * @param format
     * @param dateStr
     * @return
     */
    public static DateTime parseDateTime2(String format, String dateStr) {
        DateTime parseDateTime = null;
        try {
            parseDateTime = DateTime.parse(dateStr, DateTimeFormat .forPattern(format));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return parseDateTime;
    }

 计算当前日期的上一个月的开始日期和结束日期

/**
     * 计算当前日期的上一个月的开始日期和结束日期
     * 
     * @Title: calcLastStartEnd
     * @Description:TODO
     * @return
     * @Return: DateTime[]
     *
     */
    public static String[] calcLastStartEnd() {

        // 1.拿到当前日期
        DateTime currentDate = new DateTime();
        // 2.1 计算上一个月的开始日期
        DateTime tempLastFirstStart = currentDate.minusMonths(1).dayOfMonth()
                .withMinimumValue();
        DateTime lastFirstStart = new DateTime(tempLastFirstStart.getYear(),
                tempLastFirstStart.getMonthOfYear(),
                tempLastFirstStart.getDayOfMonth(), 0, 0, 0);
        // 2.2 计算上一个月的结束日期
        DateTime tempLastFirstEnd = currentDate.minusMonths(1).dayOfMonth()
                .withMaximumValue();
        DateTime lastFirstEnd = new DateTime(tempLastFirstEnd.getYear(),
                tempLastFirstEnd.getMonthOfYear(),
                tempLastFirstEnd.getDayOfMonth(), 23, 59, 59);
        // 3.封装在数组里面返回
        String lastStartEnd[] = new String[] {
                lastFirstStart.toString(DateUtils.FORMAT_DATE_TIME_DEFAULT),
                lastFirstEnd.toString(DateUtils.FORMAT_DATE_TIME_DEFAULT) };

        return lastStartEnd;
    }

 计算2个日期之间的差

/**
     * 
     * @Title: daysBetween
     * @Description:计算2个日期之间的差
     * @param startTime
     * @param endTime
     * @return
     * @Return: int
     *
     */
    public static int daysBetween(DateTime startTime,DateTime endTime){
        return Days.daysBetween(startTime, endTime).getDays();
    }

  org.joda.time.DateTime转java.util.Date

/**
     * org.joda.time.DateTime转java.util.Date
     * @param dateTime
     * @return
     */
    public static Date toDate(DateTime dateTime){
        return dateTime.toDate();
    }

 java.util.Date转org.joda.time.DateTime

/**
     * java.util.Date转org.joda.time.DateTime
     * @param date
     * @return
     */
    public static DateTime toDateTime(Date date){
        return new DateTime(date);
    }

 

posted @ 2016-06-28 16:22  灰太郎^_^  阅读(1975)  评论(0编辑  收藏  举报