灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1986回复:0

简单的日期封装类( Java)

楼主#
更多 发布于:2012-09-08 09:41


本来以为有了date4j就万事无休了,结果在工作的时候发觉有不少脚步仅仅需要两三个简单的class执行一下就可以完成任务了。也就是说即使是date4j,相对于这两三个甚至是一个class来说还是过于臃肿了。于是乎自己写了个简单的日期封装类。
package com.kohri.date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* @descriped a simple class for date
* @author Kohri
* @date 2012/4/22
* @version 1.0
*/
public class SimpleDate {
    private static String defaultFormat = "yyyy-MM-dd HH:mms";
    private static SimpleDateFormat sf = null ;
    private static Calendar cal = Calendar.getInstance();
    private static Date date = null;
    /**
     * get current date time (default 'yyyy-MM-dd HH:mms')
     * @return string
     */
    public static String getDateNow() {
        sf = new SimpleDateFormat(defaultFormat);
        String currentTime = "";
        currentTime = sf.format(new Date());
        return currentTime;
    }
  
    /**
     * get year (default now)
     * @return int
     */
    public static int getYear(){
        int currentYear = cal.get(Calendar.YEAR);
        return currentYear;
    }
  
    /**
     * get mon (default now)
     * @return int
     */
    public static int getMonth(){
        int currentMonth = cal.get(Calendar.MONTH) + 1;
        return currentMonth;
    }
  
    /**
     * get day of month (default now)
     * @return int
     */
    public static int getDay(){
        int currentDayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        return currentDayOfMonth;
    }
  
    /**
     * get hours (default now)
     * @return int
     */
    public static int getHours(){
        int currentHours = cal.get(Calendar.HOUR_OF_DAY);
        return currentHours;
    }
  
    /**
     * get  minutes (default now)
     * @return int
     */
    public static int getMinutes(){
        int currentMinute = cal.get(Calendar.MINUTE);
        return currentMinute;
    }
    /**
     * get seconds (default now)
     * @return int
     */
    public static int getSeconds(){
        int currentSecond = cal.get(Calendar.SECOND);
        return currentSecond;
    }
  
    /**
     * string change to date
     * @param strDate
     * @param dateFormat
     * @return date
     */
    public static Date toDate(String strDate, String dateFormat){
        if(strDate == null || strDate.length() == 0){
            return null;
        }
        Date date = null;
        DateFormat df = new SimpleDateFormat(dateFormat);
        try {
            date = df.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
  
    /**
     * Returns this Calendar's time value in milliseconds
     * @param p_date
     * @return long
     */
    public static long getMillisOfDate(Date date) {
           cal.setTime(date);
           return cal.getTimeInMillis();
    }
  
  
  
    /**
     * compare two date
     * return the greater date
     * if equals return null
     * @param strStartDate
     * @param strEndDate
     * @return date
     */
    public static Date getGreaterDate(String strStartDate, String strEndDate){
        Date date = null;
        Date startDate = toDate(strStartDate, "yyyy-MM-dd");
        Date endDate = toDate(strEndDate, "yyyy-MM-dd");
        long startTime = getMillisOfDate(startDate);
        long endTime = getMillisOfDate(endDate);
        if((startTime - endTime) > 0){
            return startDate;
        }else if((endTime - startTime) > 0){
            return endDate;
        }
        return date;
    }
  
    /**
     * get days between 2 different date
     * @param strStartDate less date (yyyy-MM-dd)
     * @param strEndDate greater date (yyyy-MM-dd)
     * @return long
     */
    public static long getDaysOftwoDiffDate(String strStartDate, String strEndDate){
           Date startDate = toDate(strStartDate, "yyyy-MM-dd");
           Date endDate = toDate(strEndDate, "yyyy-MM-dd");
           long startTime = getMillisOfDate(startDate);
           long endTime = getMillisOfDate(endDate);
           long betweenDays = (long) ((endTime - startTime) / ( 1000 * 60 * 60 * 24 ));
           return betweenDays;
    }
  
    /**
     * get weeks between 2 different date
     * @param strStartDate less date (yyyy-MM-dd)
     * @param strEndDate greater date (yyyy-MM-dd)
     * @return long
     */
    public static long getWeeksOfTwoDiffDate(String strStartDate, String strEndDate){
        return getDaysOftwoDiffDate(strStartDate, strEndDate) / 7;
    }
  
    /**
     * get months between 2 different date
     * @param strStartDate less date (yyyy-MM-dd)
     * @param strEndDate greater date (yyyy-MM-dd)
     * @return long
     */
    public static long getMonthsOfTwoDiffDate(String strStartDate, String strEndDate){
        return getDaysOftwoDiffDate(strStartDate, strEndDate) / 30;
    }
  
    /**
     * get years between 2 different date
     * @param strStartDate less date (yyyy-MM-dd)
     * @param strEndDate greater date (yyyy-MM-dd)
     * @return long
     */
    public static long getYearsOfTwoDiffDate(String strStartDate, String strEndDate){
        return getDaysOftwoDiffDate(strStartDate, strEndDate) / 365;
    }
  
    /**
     * add date
     * @param date
     * @param count
     * @param field Calendar.YEAR(MONTH ..)
     * @param format DateFormat(yyyy-MM-dd)
     * @return string
     */
    public static String addDate(Date date,int count,int field,String format){
           cal.setTime(date);
           int year = getYear();
           int month = getMonth() - 1;
           int day = getDay();
           int hours = getHours();
           int minutes = getMinutes();
           int seconds = getSeconds();
           Calendar calendar = new GregorianCalendar(year, month, day, hours, minutes, seconds);
           calendar.add(field,count);
           DateFormat df = new SimpleDateFormat(format);
           String tmpDate = df.format(calendar.getTime());
           cal.setTime(new Date());
           return tmpDate;
    }
  
    /**
     * calendar settime
     * @param date
     */
    private static void setCalTime(Date date){
        if(date != null){
            cal.setTime(date);
        }
    }
  
    //setter getter
    public static String getDefaultFormat() {
        return defaultFormat;
    }
    public static void setDefaultFormat(String defaultFormat) {
        SimpleDate.defaultFormat = defaultFormat;
    }
    public static Date getDate() {
        return date;
    }
    public static void setDate(Date date) {
        SimpleDate.date = date;
        setCalTime(date);
    }
  
}

摘自 静以修心

喜欢0 评分0
游客

返回顶部