`
菜鸟级JAVA
  • 浏览: 96741 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java date工具类

阅读更多
package util;

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

/**
* 对时间处理的相关工具类
*
* @author
* @date
* @version 1.0
*/
public class TimeUtil {

    /**
     * 判断时间戳是否在有效范围内
     *
     * @param inputTimes 输入的时间戳
     * @param regionValue 时间戳范围,毫秒级
     * @return 是否有效,有效=true
     */
    public static boolean checkTimeStamp(long inputTimes, long regionValue) {
        return Math.abs(inputTimes - System.currentTimeMillis()) < regionValue;
    }

    /**
     * 时间对象转为字符串
     *
     * @param date Date对象
     * @param type
     * 格式0=yyyy-MM-dd,1=yyyy/MM/dd,2=yyyyMMdd,3=MM/dd/yy,4=yyyy-MM-dd HH:mm:ss
     * @return 时间字符串
     */
    public static String DateToString(java.util.Date date, int type) {
        String format = "yyyy-MM-dd";
        if (type == 0) {
            format = "yyyy-MM-dd";
        } else if (type == 1) {
            format = "yyyy/MM/dd";
        } else if (type == 2) {
            format = "yyyyMMdd";
        } else if (type == 3) {
            format = "MM/dd/yy";
        } else if (type == 4) {
            format = "yyyy-MM-dd HH:mm:ss";
        } else if (type == 5) {
            format = "yyyy/MM/dd HH:mm:ss";
        } else if (type == 6) {
            format = "yyyyMMddHHmmss";
        } else if(type == 7){
            format = "yyyyMMddHHmmssSSS";
        }
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        if (date != null) {
            return formatter.format(date);
        } else {
            return "";
        }
    }

    /**
     * 字符串对象转为Date对象,格式不符返回null
     *
     * @param strDate 输入字符串
     * @param type
     * 格式0=yyyy-MM-dd,1=yyyy/MM/dd,2=yyyyMMdd,3=MM/dd/yy,4=yyyy-MM-dd HH:mm:ss
     * @return Date对象
     */
    public static java.util.Date StringToDate(String strDate, int type) {
        Date result = null;
        String format = "yyyy-MM-dd";
        if (type == 0) {
            format = "yyyy-MM-dd";
        } else if (type == 1) {
            format = "yyyy/MM/dd";
        } else if (type == 2) {
            format = "yyyyMMdd";
        } else if (type == 3) {
            format = "MM/dd/yy";
        } else if (type == 4) {
            format = "yyyy-MM-dd HH:mm:ss";
        } else if (type == 5) {
            format = "yyyy/MM/dd HH:mm:ss";
        } else if (type == 6) {
            format = "yyyyMMddHHmmss";
        } else if (type == 7) {
            format = "yyyyMMddHHmmssSSSZ";
        }
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        if (strDate != null && !strDate.equals("")) {
            try {
                result = formatter.parse(strDate);
            } catch (ParseException ex) {
                result = null;
                ex.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 判断是否闰年
     *
     * @param year 年份
     * @return true=是闰年
     */
    public static boolean isLeapYear(int year) {
        return (((year % 4) == 0 && year % 100 != 0) || year % 400 == 0);
    }

    /**
     * 返回四位年份
     *
     * @param date 输入时间
     * @return 年份
     */
    public static int getYear(Date date) {
        if (date == null) {
            return -1;
        }
        return date.getYear() + 1900;
    }

    /**
     * 返回月份
     *
     * @param date 输入时间
     * @return 月份
     */
    public static int getMonth(Date date) {
        if (date == null) {
            return -1;
        }
        return date.getMonth() + 1;
    }

    /**
     * 返回几号
     *
     * @param date 输入时间
     * @return 几号
     */
    public static int getMonthDay(Date date) {
        if (date == null) {
            return -1;
        }
        return date.getDate();
    }

    /**
     * 返回周几,0=Sunday,1=Monday,2=Tuesday,3Wednesday,4=Thursday,5=Friday,6=Saturday
     *
     * @param date 输入时间
     * @return 周几
     */
    public static int getWeekDay(Date date) {
        if (date == null) {
            return -1;
        }
        return date.getDay();
    }

    /**
     * 返回周几(中国),7=Sunday,1=Monday,2=Tuesday,3Wednesday,4=Thursday,5=Friday,6=Saturday
     *
     * @param date 输入时间
     * @return 周几
     */
    public static int getChinaWeekDay(Date date) {
        if (date == null) {
            return -1;
        }
        int d = date.getDay();
        if (d == 0) {
            d = 7;
        }

        return d;
    }

    /**
     * 返回小时数(0-23)
     *
     * @param date 输入时间
     * @return 小时数
     */
    public static int getHours(Date date) {
        if (date == null) {
            return -1;
        }
        return date.getHours();
    }

    /**
     * 返回分钟数
     *
     * @param date 输入时间
     * @return 分钟数
     */
    public static int getMinutes(Date date) {
        if (date == null) {
            return -1;
        }
        return date.getMinutes();
    }

    /**
     * 是否是今天
     *
     * @param date 输入时间
     * @return true=是
     */
    public static boolean isToday(Date date) {
        if (date == null) {
            return false;
        }
        Date today = new Date();
        return (date.getYear() == today.getYear() && date.getMonth() == today.getMonth() && date
                .getDate() == today.getDate()) ? true : false;
    }

    /**
     * 是否在某个小时的区间0-23内。
     *
     * @param date 输入时间
     * @param hour 某小时
     * @return true=true
     */
    public static boolean isInHour(Date date, int hour) {
        if (date == null || hour < 0) {
            return false;
        }
        return (getHours(date) == hour) ? true : false;
    }

    /**
     * GMT字符串转成时间字符串
     *
     * @param gmtStr
     * @param type
     * @return
     */
    public static String dateGMTStrToString(String gmtStr, int type) {
        String format = "yyyy-MM-dd";
        if (type == 0) {
            format = "yyyy-MM-dd";
        } else if (type == 1) {
            format = "yyyy/MM/dd";
        } else if (type == 2) {
            format = "yyyyMMdd";
        } else if (type == 3) {
            format = "MM/dd/yy";
        } else if (type == 4) {
            format = "yyyy-MM-dd HH:mm:ss";
        } else if (type == 5) {
            format = "yyyy/MM/dd HH:mm:ss";
        } else if (type == 6) {
            format = "yyyyMMddHHmmss";
        } else if(type == 7){
            format = "yyyyMMddHHmmssSSS";
        }
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        if (gmtStr != null) {
            return formatter.format(Date.parse(gmtStr));
        } else {
            return "";
        }
    }
    /**
* 获取当前时间的下个月1号的时间
* 如何time参数为空,则时分秒为当前的时分秒,否则为指定的时分秒
* time的格式只能为HH:mm:ss
*/
public static Date getfirstDayOfNextMonthByNow(String time,int type) throws Exception{
Calendar cal = Calendar.getInstance();
//当前日期到下个月1号的还差多少天
int day = (TimeUtil.getCurrentMonthLastDay()-cal.get(Calendar.DAY_OF_MONTH))+1;
if(type==1){
cal.add(Calendar.DAY_OF_MONTH, day);
}else if(type==2){
cal.add(Calendar.DAY_OF_MONTH, day);
cal.add(Calendar.MONTH, 2);
}else if(type==3){
cal.add(Calendar.DAY_OF_MONTH, day);
cal.add(Calendar.MONTH, 5);
}
return format(cal.getTime(), time);
}

/**
* 获取当前时间的特定天数的后的时间
* 如何time参数为空,则时分秒为当前的时分秒,否则为指定的时分秒
* time的格式只能为HH:mm:ss
*/
public static Date getDayOfNextMonthByNow(int type) throws Exception{
Calendar cal = Calendar.getInstance();
if(type==1){
cal.add(Calendar.DAY_OF_MONTH, 30);
}else if(type==2){
cal.add(Calendar.DAY_OF_MONTH, 91);
}else if(type==3){
cal.add(Calendar.DAY_OF_MONTH, 180);
}else if(type==4){
cal.add(Calendar.DAY_OF_MONTH, 365);
}
return cal.getTime();
}


/**
* 获取当前时间的下一年的当前月1号时间
* 如何time参数为空,则时分秒为当前的时分秒,否则为指定的时分秒
*  time的格式只能为HH:mm:ss
*/
public static Date getfirstDayOfNextYearByNow(String time) throws Exception{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -cal.get(Calendar.DAY_OF_MONTH)+1);
cal.add(Calendar.YEAR, 1);
return format(cal.getTime(), time);
}


private static  Date format(Date date,String time) throws Exception{
String dateString = DateToString(date, 0);
if(time==null||"".equals(time)){
time = DateToString(date, 10);
}
String regex = "[0-2][0-9]:[0-5][0-9]:[0-5][0-9]";
if(!Pattern.matches(regex, time)){
throw new Exception("time的格式只能为HH:mm:ss");
}
dateString = dateString+" "+time;
return StringToDate(dateString, 4);
}
   
/**
* 取得当月天数
* */
public static int getCurrentMonthLastDay() {
Calendar a = Calendar.getInstance();
a.set(Calendar.DATE, 1);// 把日期设置为当月第一天
a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
int maxDate = a.get(Calendar.DATE);
return maxDate;
}


    public static void main(String[] args) {
        try {
System.out.println(TimeUtil.DateToString(TimeUtil.getDayOfNextMonthByNow(1), 4));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    }


}
分享到:
评论

相关推荐

    javadate工具类

    date工具类

    java Date工具类

    最近由于项目需要写了一些关于操作Date的代码,建议把经常需要的工具类保存下来,以备不时之需

    Date日期操作工具类

    在Java编程中,Date类是处理日期和时间的基础类,但在实际开发中,由于Date类本身的API设计并不十分友好,通常我们会使用工具类来简化日期的处理工作。本主题聚焦于一个名为"Date日期操作工具类"的实用工具,它提供...

    java的Date工具类

    这是本人自己整理的java中的Date工具类,包含了常用的时间格式化方法和转换方法;在工作中使用起来还是蛮方便的;希望对大家有帮助!

    java Date操作工具类

    java Date操作工具类,对日期的各种基本的操作

    java工具类集合

    Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    牛逼的java常用工具类

    在这个名为"牛逼的java常用工具类"的压缩包中,我们可以期待找到一些由经验丰富的开发者精心设计和优化的工具类,这些工具类能极大地提高开发效率,减少代码量,使程序更加健壮。下面,我们将详细探讨一些可能包含在...

    Java常用工具类

    Java常用工具类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、...

    java常用工具类

    在Java编程中,工具类(Util Classes)是包含各种实用方法的类,它们不持有状态,主要用于提供方便的静态方法。这些工具类极大地提升了代码的可读性和复用性。以下将详细介绍标题和描述中提到的一些关键工具类及其...

    java 常用工具类

    Java工具类是Java编程中非常重要的组成部分,它们提供了一系列预定义的方法,可以帮助开发者高效地处理各种常见任务,而无需从头实现。在Java中,最知名的工具类库是`java.util`包,它包含了大量方便实用的类。下面...

    Java各种工具类

    **java.util**: 这是最核心的工具包之一,包含了集合框架(如ArrayList、LinkedList、HashSet、HashMap等)、日期时间API(如Date、Calendar、LocalDate等)、事件模型、线程管理、随机数生成器以及多种实用工具类...

    Java常用工具类集合

    在Java编程语言中,工具类集合是一系列实用的类,它们提供了各种通用功能,帮助开发者更高效地编写代码。这些工具类通常包含在Java的`java.util`以及其他相关的包中,如`java.text`,`javax.imageio`,`javax.xml`等...

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    java 使用Date类获取系统的当前时间

    总的来说,`java.util.Date` 类在获取和表示当前系统时间上是一个基础且实用的工具,虽然在新的Java版本中有了更好的替代品,但理解其工作原理对于理解Java的日期和时间处理至关重要。在实际编程中,根据项目需求和...

    整理的若干java常用工具类

    Java工具类是Java编程中非常重要的组成部分,它们提供了一系列便捷的方法,可以极大地提高开发效率,减少重复代码。这里我们主要探讨的是一个集合了多种常见功能的Java工具类库。 首先,我们要理解Java工具类(Java...

    JAVA 工具类 项目

    在Java编程中,工具类(Utility Class)是包含静态方法的类,这些方法通常执行某种通用操作或提供一些辅助功能。这些工具类可以极大地提高代码的可读性和可重用性,减少代码冗余,使得开发者能更专注于业务逻辑。在...

Global site tag (gtag.js) - Google Analytics