java 日期工具类DateUtils

日期工具类DateUtils

CreateTime--2017年5月27日08:48:00
Author:Marydon

  DateUtils.java-对日期类的进一步封装

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

/**
 * 封装日期类
 * 
 * @author Marydon
 * @createTime 2017年5月27日上午8:49:50
 * @updateTime
 * @Email:Marydon2017@163.com
 * @version:1.0.0
 */
public class DateUtils {
    /**
     * 对日期进行格式化
     * @param date 
     *     要转换的日期
     * @param pattern
     *     希望转换成什么样的格式
     * @return str
     *     格式化后的日期字符串
     */
    public static String dateFormat(Date date, String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        String str = sdf.format(date);
        return str;
    }

    /**
     * 根据初始日期推算期望(向前/向后)日期
     * @param initTime
     *     初始日期(initTime可以是null、Date、String数据类型)
     * @param n
     *     向前/向后推算n天(n可以是正整数、0、负整数)
     * @return
     *     推算后的日期字符串
     */
    public static String getCalculateDay(Object initTime,int n){
        // 返回推算后的日期
        String calculateDay = "";
        try {
            // 实例化日历类Calendar
            Calendar calendar = Calendar.getInstance();  
            // 定义日期格式化样式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            // 初始日期
            Date initDate = null;
            // 判断参数类型
            if (null == initTime) {
                // 取系统当前时间
                initDate = new Date();
            } else if (initTime instanceof Date) {
                initDate = (Date)initTime;
            } else {
                // 日期格式字符串转换成日期类Date
                initDate = sdf.parse((String)initTime);
            }
            // 设置日历时间
            calendar.setTime(initDate);
            // 设置推算后的日历时间
            calendar.add(Calendar.DATE, n);
            // 获取推算后的日期
            Date calculateDate = calendar.getTime();
            // 进行格式化
            calculateDay = sdf.format(calculateDate);
        } catch(ParseException e) {
            return calculateDay;
        }
        return calculateDay;
    } 
}    

 

  根据初始日期推算期望(向前/向后)日期之方法二
/**
     * 根据初始日期推算期望(向前/向后)日期
     * @param initTime
     *     初始日期
     * @param n
     *     向前/向后推算n天
     * @return
     *     推算后的日期
     */
    public static String getCalculateDay(Object initTime,int n) throws ParseException{  
        // 返回推算后的日期
        String calculateDay = "";
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 初始日期
        Date initDate = null;
        
        if (initTime instanceof Date) 
          initDate = (Date)initTime;
        else
          initDate = sdf.parse((String)initTime);
        // 转换成距离1970年0时0分的毫秒数
        Long initMilliSeconds = initDate.getTime();
        // 一天代表的毫秒数
        int oneDayTime = 24 * 60 * 60 * 1000;
        initMilliSeconds += oneDayTime * n;
        
        // 推算出的日期
        Date calculateDate = new Date(initMilliSeconds);
        calculateDay = sdf.format(calculateDate);
        return calculateDay;
    }

  UpdateTime--2017年8月10日17:12:21

  获取系统当前时间

  方法一:

    调用上面的DateUtils.dateFormat(new Date(),"yyyy-MM-dd") 即可

  方法二:

public static Calendar calendar = Calendar.getInstance();
/**
 * 获取当前年份
 * 
 * @return
 */
public static int getCurYear() {
    return calendar.get(Calendar.YEAR);
}

/**
 * 获取当前月份
 * 
 * @return
 */
public static int getJCMMonth() {
    return calendar.get(Calendar.MONTH) + 1;
}

/**
 * 获取当前天
 * 
 * @return
 */
public static int getJCMDay() {
    return calendar.get(Calendar.DATE);
}

/**
 * 获取当前月份(01,02,03......11,12)
 * 
 * @return
 */
public static String getJCMMonthF() {
    return formatDate(calendar.get(Calendar.MONTH) + 1);
}

/**
 * 获取当前天(01,02,03......29,30)
 * 
 * @return
 */
public static String getJCMDayF() {
    return formatDate(calendar.get(Calendar.DATE));
}

/**
 * 把月份和日期修改为两位数字
 * 
 * @param date
 * @return
 */
public static String formatDate(int date) {
    String date2 = "0";
    if (date <= 9) {
        date2 += String.valueOf(date);
    } else {
        date2 = String.valueOf(date);
    }
    return date2;
}

  测试:

// 获取系统当前时间
// 方式一
// 1.这种方式返回的月和日如果没有值小于10,不会自动加0;
// 2.int转String,直接拼接字符串会自动将结果转换成String
System.out.println(getCurYear() + "-" + getJCMMonth() + "-" + getJCMDay());//2017-8-9
// 方式二
System.out.println(getCurYear() + "-" + getJCMMonthF() + "-" + getJCMDayF());//2017-08-09                 
posted @ 2017-05-27 09:17  Marydon  阅读(1170)  评论(0编辑  收藏  举报