`

Date Util

阅读更多
package com.chintrip.util;

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

import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;

/**
 *
 * 日期处理工具类
 * @author 58tc
 *
 */
public class DateTimeUtil {
    
    public static String FORMAT_DEFAULT_MIN = "yyyyMMddHHmmss";
    public static String FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss";
    public static String FORMAT_DEFAULT_CH = "yyyy年MM月dd日 HH时mm分ss秒";
    public static String FORMAT_DEFAULT_YMD = "yyyy-MM-dd";
    public static String FORMAT_DEFAULT_YM = "yyyy-MM";
    public static String FORMAT_DEFAULT_HM = "yyyy-MM-dd HH:mm";
    public static BiMap<String,String> planeMonth= HashBiMap.create();//双向map
    public static Map<String,String> sundayMap=new HashMap<String,String>();
    static{
        planeMonth.put("01", "JAN");
        planeMonth.put("02", "FEB");
        planeMonth.put("03", "MAR");
        planeMonth.put("04", "APR");
        planeMonth.put("05", "MAY");
        planeMonth.put("06", "JUN");
        planeMonth.put("07", "JUL");
        planeMonth.put("08", "AUG");
        planeMonth.put("09", "SEP");
        planeMonth.put("10", "OCT");
        planeMonth.put("11", "NOV");
        planeMonth.put("12", "DEC");
    }
    public static Date current(){
        return new Date();
    }
    
    public static String dateToStrOfDefaulfFormat(Date date) {
        return dateToStr(date, FORMAT_DEFAULT);
    }

    public static String dateToStrOfYMDFormat(Date date) {
        return dateToStr(date, FORMAT_DEFAULT_YMD);
    }
    
    public static String dateToStrOfYMDHMFormat(Date date) {
        return dateToStr(date, FORMAT_DEFAULT_HM);
    }

    public static Date strToDateOfDefaulfFormat(String dateStr) {
        if(dateStr==null || dateStr.equals("null") ){
            return null;
        }
        return strToDate(dateStr, FORMAT_DEFAULT);
    }

    public static Date strToDateOfYMDFormat(String dateStr) {
        return strToDate(dateStr, FORMAT_DEFAULT_YMD);
    }
    
    public static Integer[] getYMDHMS(Date date){
        Calendar cal = getCalendar(date);
        return new Integer[] {cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
                cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)};
    }
    
    public static Integer getWeekOfMonth(Date date){
        Calendar cal = getCalendar(date);
        
        return  cal.get(Calendar.WEEK_OF_MONTH);
    }
    
    
    /**
     * 取本周周一的日期(周一为一周第一天)
     * @param date
     * @return
     */
    public static Date thisWeekMonday(Date date){
        Calendar cal = getCalendar(date);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return cal.getTime();
    }

    
    
    /**
     * 返回星期数(周日返回7)
     * @param date
     * @return
     */
    public static Integer getDayOfWeek(Date date){
        Calendar cal = getCalendar(date);
        int re= cal.get(Calendar.DAY_OF_WEEK);
        if(re==0){
            return 7;
        }else{
            return re-1;
        }
    }
    
    public static Date addSecond(Date date, int num){
        return add(date, Calendar.SECOND, num);
    }
    
    public static Date addMinute(Date date, int num){
        return add(date, Calendar.MINUTE, num);
    }
    
    public static Date addHour(Date date, int num){
        return add(date, Calendar.HOUR_OF_DAY, num);
    }
    
    public static Date addDay(Date date, int num){
        return add(date, Calendar.DAY_OF_MONTH, num);
    }
    
      public static Date addWorkDay(Date src,int adddays){

            Calendar cal = getCalendar(src);
            boolean holidayFlag = false;
            for (int i = 0; i < adddays; i++)
            {
                //把源日期加一天
                cal.add(Calendar.DAY_OF_MONTH, 1);
                holidayFlag =checkHoliday(cal);
                if(holidayFlag)
                {
                   i--;
                }
            }
            return cal.getTime();

        }
    
      public static boolean checkHoliday(Calendar src){

            boolean result = false;

            //先检查是否是周六周日(有些国家是周五周六)
            if (src.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY|| src.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
            {
                return true;
            }
            
            return result;

        }
      
    public static Date addMonth(Date date, int num){
        return add(date, Calendar.MONTH, num);
    }
    
    public static Date add(Date date, int field, int num){
        Calendar cal = getCalendar(date);
        cal.add(field, num);
        return cal.getTime();
    }
    
    public static Date firstOfMonth(Date date){
        Date d= first(date, Calendar.DAY_OF_MONTH);
        d=first(d);
        return d;
    }
    
    public static Date lastOfMonth(Date date){
        Date d=last(date, Calendar.DAY_OF_MONTH);
        d=last(d);
        return d;
    }
    
    public static Date firstOfHour(Date date){
        return first(date, Calendar.HOUR_OF_DAY);
    }
    
    
    public static Date first(Date date, int d){
        if(null == date) return date;
        Calendar cal = getCalendar(date);
        cal.set(d, cal.getMinimum(d));//getActualMinimum
        return cal.getTime();
    }
    
    public static Date first(Date date){
        if(null == date) return date;
        Calendar cal = getCalendar(date);
        cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
        cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
        cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
        return cal.getTime();
    }
    
    public static Date last(Date date, int d){
        if(null == date) return date;
        Calendar cal = getCalendar(date);
        cal.set(d, cal.getActualMaximum(d));
        return cal.getTime();
    }
    
    public static Date last(Date date){
        if(null == date) return date;
        Calendar cal = getCalendar(date);
        cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
        cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE));
        cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND));
        return cal.getTime();
    }
    
    
    public static Calendar getCalendar(Date date){
        Calendar cal = Calendar.getInstance();
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setTime(date);
        return cal;
    }
    
    /**
     * 日期转换为制定的字符串格式
     * @param date
     * @param format
     * @return
     */
    public static String dateToStr(Date date, String format){
        if(null == date) return "";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }
    
    /**
     * 字符串转换为日期类型
     * @param dateStr
     * @param format
     * @return
     */
    public static Date strToDate(String dateStr, String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        try {
            return sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**  
     * 计算两日期间相差天数.  
     *   
     *
     * @param d1  
     *            开始日期 日期型  
     * @param d2  
     *            结束日期 日期型  
     * @return long 天数  
     */  
    public static long signDaysBetweenTowDate(Date d1, Date d2) {
        return (d2.getTime() - d1.getTime()) / (3600 * 24 * 1000);   
    }   
    
    public static long minuteBetweenTowDate(Date d1, Date d2) {
        return (d2.getTime() - d1.getTime()) / (60 *  1000);   
    }   
    
    public static String signSecondBetweenTowDate(Date d1, Date d2){
         if(d1==null || d2==null){
             return "";
         }
         String resultDate="";
         long l=d2.getTime()-d1.getTime();
         long day=l/(24*60*60*1000);
         long hour=(l/(60*60*1000)-day*24);
         long min=((l/(60*1000))-day*24*60-hour*60);
         long s=(l/1000-day*24*60*60-hour*60*60-min*60);
         if(day>0){
             resultDate+=day+"天";
         }
         if(hour>0){
             resultDate+=hour+"小时";
         }
         if(min>0){
             resultDate+=min+"分";
         }
         resultDate+=s+"秒";
         return resultDate;
    }
    
    public static int monthBetweenTowDate(Date date1, Date date2) {
          Calendar cal1 =  getCalendar(date2);
          Calendar cal2 =  getCalendar(date1);
          int c =
           (cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR)) * 12 + cal1.get(Calendar.MONTH)
            - cal2.get(Calendar.MONTH);
          return c;
         }
    
    /**
     * @param dateStr
     * 24DEC12格式日期
     * @return
     */
    public static Date getFromPlaneDate(String dateStr)
    {
        if(StringUtil.empty(dateStr)||dateStr.length()!=7){
            return null;
        }
        String monstr=dateStr.substring(2, 5);
        String newmon=null;
        BiMap<String,String> bimap = planeMonth.inverse();   
        newmon=bimap.get(monstr);
        return strToDate(dateStr.substring(0, 2)+newmon+dateStr.substring(5),"ddMMyy");
    }
    
    /**
     * @param dateStr
     * 30JUN格式日期
     * @return
     */
    public static String getFromPlaneDate1(String dateStr)
    {
        if(StringUtil.empty(dateStr)||dateStr.length()!=5){
            return null;
        }
        String monstr=dateStr.substring(2,5);
        String newmon=null;
        BiMap<String,String> bimap = planeMonth.inverse();   
        newmon=bimap.get(monstr);
        return newmon+"-"+dateStr.substring(0,2);
    }
    
    /**
     * @param dateStr
     * yyyy-MM-dd格式日期
     * @return
     * 30JUN2012
     *
     */
    public static String getPlaneDateFull(String dateStr)
    {
      String newmon = "";
      String daystr = dateStr.substring(8, 10);
      String yearstr = dateStr.substring(2, 4);
      String monstr = dateStr.substring(5, 7);
      newmon=planeMonth.get(monstr);
      return daystr + newmon + yearstr;
    }
    
    /**
     * @param dateStr
     * yyyy-MM-dd格式日期
     * @return
     * 30JUN
     *
     */
    public static String getPlaneDateMin(String dateStr)
    {
      String newmon = "";
      String daystr = dateStr.substring(8, 10);
      String monstr = dateStr.substring(5, 7);
      newmon=planeMonth.get(monstr);
      return daystr + newmon ;
    }
    
    
    public static void main(String[] args){
        
//        System.out.println("::::" + dateToStr(new Date(), FORMAT_DEFAULT_MIN));
//        System.out.println(strToDate("2012-11-01", FORMAT_DEFAULT_YMD).getTime());
//        System.out.println("::::" + dateToStr(addDay(current(), -7), FORMAT_DEFAULT));
//        System.out.println(addDay(new Date(),10));
//        System.out.println("getFromPlaneDate:"+getFromPlaneDate("24DEC12").toLocaleString());
        String aa="30JUN";
        Date now=new Date();
        Date d2=strToDate("2013-05-16 15:00:00", FORMAT_DEFAULT);
        System.out.println( firstOfMonth(now));
//        System.out.println(getDayOfWeek(d1));
//        System.out.println(thisWeekMonday(d1).toLocaleString());
    }
    
}

 

分享到:
评论

相关推荐

    util.date 和 sql.date 相关问题汇总

    java中util.date和sql.date的类型转换问题.帮助大家很完善的了解关于java日期类型和数据库日期类型转换的问题,很值得拥有.

    项目中可能会用到的Util类 如 Date String

    在这个项目中,我们关注的是"Date Util"和"String Util",它们是Java编程中非常重要的两个工具类。 Date Util主要涉及日期和时间的处理。在Java中,日期和时间的处理最初是通过`java.util.Date`和`java.text....

    java_sql_Date与java_util_Date转换

    java_sql_Date与java_util_Date转换

    util包里的Date类转换为sql包里的Date

    本文将详细介绍如何将`java.util.Date`对象转换为`java.sql.Date`对象,这对于那些需要将日期值存储到数据库中的应用程序来说至关重要。 ### 标题:util包里的Date类转换为sql包里的Date #### 了解util包里的Date...

    JS DateUtil工具类

    JS日期工具类,方便大家的使用。后期会持续更新.......

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    ### Java.util.Date与Java.sql.Date互转及字符串转换为日期时间格式 #### 一、Java.util.Date与Java.sql.Date的基本概念 在Java编程语言中,处理日期和时间时经常使用到`java.util.Date`和`java.sql.Date`这两个类...

    java.util.Date与java.sql.Date相互转换

    ### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...

    js-date-util:java脚本日期工具类

    `js-date-util` 是一个专为JavaScript设计的日期处理库,它提供了丰富的功能,帮助开发者在JavaScript环境中更方便地操作和格式化日期。这个库特别适用于那些需要在前端或者Node.js环境中进行复杂日期计算和格式化的...

    java.util.Date到Json日期

    ### Java.util.Date到JSON日期转换详解 在Java中处理日期并将其转换为JSON格式是常见的需求,尤其是在进行网络传输或存储操作时。本篇文章将详细介绍如何将`java.util.Date`对象转换为符合特定格式的JSON字符串,...

    PKG_DATE_UTIL.zip_PKG DATE_pkg date_日期处理

    `PKG_DATE_UTIL.zip_PKG DATE_pkg date_日期处理`这个压缩包提供了一个专门用于日期处理的工具,名为`PKG_DATE_UTIL`。下面将详细阐述这个工具的主要功能及其在实际应用中的价值。 首先,`PKG_DATE_UTIL`主要关注的...

    java.sql.date与java.util.date.pdf

    Java.sql.Date与Java.util.Date的区别和转换 Java.util.Date和Java.sql.Date是Java中两种不同的日期和时间表示方式,虽然它们都是表示日期和时间,但是它们之间存在着一些重要的区别。 首先,Java.util.Date是Java...

    struts的form不能初始化java.util.Date类型

    然而,有一个常见的问题出现在尝试初始化`java.util.Date`类型的字段时,即“Struts的form不能初始化java.util.Date类型”。这个问题通常是由于日期对象的序列化和反序列化机制导致的,以及Struts默认的数据绑定策略...

    Java Date Time教程-java.util.Date

    Java的java.util.Date类是Java初的时间类之一。该类的大部分方法已不推荐使用,取而代之的是java.util.Calendar类。不过你仍然可以使用java.util.Date类去表示某个时间。下面是一个如何实例化java.util.Date的例子:...

Global site tag (gtag.js) - Google Analytics