用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

各种时间的处理转换

2013-07-26 作者: wcj举报

[java]代码库

import java.util.*;
import java.text.*;
import java.sql.Time;
public class DateFactory {
 
    public DateFactory() {
    }
 
    /*
    private static String[][] timeZoneList = null;
    private static Object timeZoneLock = new Object();
    public static final long SECOND = 1000;
    public static final long MINUTE = 60 * SECOND;
    public static final long HOUR = 60 * MINUTE;
    public static final long DAY = 24 * HOUR;
    public static final long WEEK = 7 * DAY;*/
 
    private static Calendar str2Calendar(String date){
        DateFormat df = DateFormat.getDateInstance();
        try {
            df.parse(date);
            return df.getCalendar();
        }catch (ParseException e) {
            return null;
        }
    }
     
    private static Calendar getCalendar(java.util.Date date){
        Calendar cal =  getCalendar();
        cal.setTime(date);
        return cal;
    }
     
    private static Calendar getCalendar(){
        return Calendar.getInstance();
    }
     
    /**
     * 字符型日期转化为 java.sql.Date 型
     * @param date
     * @param format 0:yyyy-MM-dd 1:yyyy-MM-dd HH:mm:ss
     * @return
     * @throws ParseException
     */
    public static java.sql.Date str2date(String date, int format){
        if (date == null) {
            return null;
        }
        SimpleDateFormat sdf = null;
        if (format == 0) { // 日期格式
            sdf = new SimpleDateFormat("yyyy-MM-dd");
        }else if(format==1){
            sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
        try {
            java.util.Date dt = sdf.parse(date);
            return new java.sql.Date(dt.getTime());
        } catch (Exception e) {
            return new java.sql.Date(str2Calendar(date).getTime().getTime());
        }
    }
     
    /**
     * 日期型转为字符串
     * @param date
     * @param format
     * @return
     */
    public static String date2str(java.util.Date date){
        return new java.sql.Date(date.getTime()).toString();
    }
     
    /**
     * 格式化时间
     * @param date
     * @param format
     * @return
     */
    public static String FormatDate(java.util.Date date, int format){
        String fm = "";
        if(format==0){
            fm = "yyyy-MM-dd";
        }else if(format==1){
            fm = "yyyy-MM-dd HH:mm:ss";
        }else if(format==2){
            fm = "yyyyMMdd";
        }else if(format==3){
            fm = "yyyyMMddHHmmss";
        }
        return FormatDate(date, fm);
    }
    public static String FormatDate(java.util.Date date, String format){
        java.text.SimpleDateFormat ft = new SimpleDateFormat(format);
        return ft.format(date);
    }
     
    /**
     * 取周几
     * @param strDate 日期
     * @return
     */
    public static int getDateInWeek(String strDate) {
        Calendar c = str2Calendar(strDate);
        if(c!=null){
            return c.get(c.DAY_OF_WEEK) - c.SUNDAY;
        }else{
            return -1;
        }
    }
 
    /**
     * 取当前日期
     * @return
     */
    public static String getDate() {
        return FormatDate(getCalendar().getTime(), 0);
    }
 
    /**
     * 取当前日期的年月日
     * @style 表示单位的类型,1-年(YEAR),2-月(MONTH),3-日(DAY)
     */
    public static String getDate(String style) {
        return getYearMonthDate(getDate(), style)+"";
    }
 
    /**
     * 取当前时间,排除年月日,只取时间
     * @return
     */
    public static String getTime() {
        java.sql.Time time = new Time(getCalendar().getTime().getTime());
        return time.toString();
    }
 
    /**
     * 取当前时间,包括年月日时分秒
     * @return
     */
    public static String getSysTime() {
        return getSysTime(1);
    }
     
    /**
     * 取当前时间,格式自定义
     * @param format
     * @return 格式字符串
     */
    public static String getSysTime(String format) {
        return FormatDate(getCalendar().getTime(), format);
    }
    public static String getSysTime(int format) {
        return FormatDate(getCalendar().getTime(), format);
    }
     
    /**
     * 取格林时间  1970-01-01 08:00:00
     * @return
     */
    public static String getGMTTime(){
        return FormatDate(new java.util.Date(0),1);    
    }
 
    /**
     * 取某一年某一月最后那一天日期,只包括年月日
     * @param year 年
     * @param month 月
     * @return
     */
    public static String getMaxDate(int year, int month) {
        Calendar cal = getCalendar();
        cal.set(year, month, getMonthDays(year, month));
        return date2str(cal.getTime());
    }
 
    /**
     * 取年的第一天,只包括年月日
     * @param year
     * @return
     */
    public static String getYearFirstDay(int year){
        Calendar cal = getCalendar();
        cal.set(year, 0, 1);
        return date2str(cal.getTime());
    }
     
    /**
     * 取年的第一天,只包括年月日
     * @param date 当前日期
     * @return
     */
    public static String getYearFirstDay(java.sql.Date date){
        Calendar cal = getCalendar(date);
        return getYearFirstDay(cal.get(Calendar.YEAR));
    }
     
    /**
     * 取年的第一天,只包括年月日
     * @param date 当前日期
     * @return
     */
    public static String getYearFirstDay(String date){
        return getYearFirstDay(str2date(date,0));
    }
     
    /**
     * 取年的最后一天,只包括年月日
     * @return
     */
    public static String getYearLastDay(){
        return getYearLastDay(getDate());
    }
    public static String getYearLastDay(String date){
        return getYearLastDay(str2date(date,0));
    }
    public static String getYearLastDay(java.sql.Date date){
        Calendar cal = getCalendar(date);
        int year = cal.get(Calendar.YEAR);
        int month = cal.getActualMaximum(Calendar.MONTH);
        cal.set(year, month, getMonthDays(year,month+1));
        return date2str(cal.getTime());
    }
     
    /**
     * 取某一年某一月的第一天,只包括年月日
     * @param year 年
     * @param month 月
     * @return
     */
    public static String getMonthFisrtDay(int year, int month) {
        Calendar cal = getCalendar();
        cal.set(year, month-1, 1);
        return date2str(cal.getTime());
    }
    public static String getMonthFisrtDay(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        cal.set(Calendar.DATE, 1);
        return date2str(cal.getTime());
    }
    public static String getMonthFisrtDay(String date) {
        return getMonthFisrtDay(str2date(date,0));
    }
 
    /**
     * 取某一年某一月的总天数
     * @param year  年
     * @param month 月
     * @return
     */
    public static int getMonthDays(int year, int month) {
        Calendar cal = getCalendar();
        cal.set(year,month-1,1);
        return cal.getActualMaximum(Calendar.DATE);
    }
    public static int getMonthDays(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        return cal.getActualMaximum(Calendar.DATE);
    }
    public static int getMonthDays(String date) {
        return getMonthDays(str2date(date,0));
    }  
 
    /**
     * 取某一年的天数
     * @param date
     * @return
     */
    public static int getYearDays(String date) {
        return getYearDays(str2date(date,0));
    }
    public static int getYearDays(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        return cal.getActualMaximum(Calendar.DAY_OF_YEAR);
    }
     
    /**
     * 取当前季度的开始的日期,只包括年月日
     * @return
     */
    public static String getThisQuarterBeginTime() {
        Calendar cal = getCalendar();
        int month = cal.get(Calendar.MONTH) + 1;
        cal.set(Calendar.DATE, 1);
        if(month>=1 && month<=3){
            cal.set(Calendar.MONTH, 0);
            return FormatDate(cal.getTime(), 1);
        }else if(month>=4 && month <=6){
            cal.set(Calendar.MONTH, 3);
            return FormatDate(cal.getTime(), 1);
        }else if(month>=7 && month <=9){
            cal.set(Calendar.MONTH, 6);
            return FormatDate(cal.getTime(), 1);
        }else{
            cal.set(Calendar.MONTH, 9);
            return FormatDate(cal.getTime(), 1);
        }
    }
    public static String getThisQuarterBeginTime(String date) {
        return getThisQuarterBeginTime(str2date(date,1));
    }
    public static String getThisQuarterBeginTime(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        int month = cal.get(Calendar.MONTH) + 1;
        cal.set(Calendar.DATE, 1);
        if(month>=1 && month<=3){
            cal.set(Calendar.MONTH, 0);
            return FormatDate(cal.getTime(), 1);
        }else if(month>=4 && month <=6){
            cal.set(Calendar.MONTH, 3);
            return FormatDate(cal.getTime(), 1);
        }else if(month>=7 && month <=9){
            cal.set(Calendar.MONTH, 6);
            return FormatDate(cal.getTime(), 1);
        }else{
            cal.set(Calendar.MONTH, 9);
            return FormatDate(cal.getTime(), 1);
        }
    }
     
    /**
     * 取当前季度的结束的日期,只包括年月日
     * @return
     */
    public static String getThisQuarterEndTime() {
        Calendar cal = getCalendar();
        int month = cal.get(Calendar.MONTH) + 1;
        cal.set(Calendar.DATE, getMonthDays(Calendar.YEAR, month));
        if(month>=1 && month<=3){
            cal.set(Calendar.MONTH, 2);
            return FormatDate(cal.getTime(), 1);
        }else if(month>=4 && month <=6){
            cal.set(Calendar.MONTH, 5);
            return FormatDate(cal.getTime(), 1);
        }else if(month>=7 && month <=9){
            cal.set(Calendar.MONTH, 8);
            return FormatDate(cal.getTime(), 1);
        }else{
            cal.set(Calendar.MONTH, 11);
            return FormatDate(cal.getTime(), 1);
        }
    }
    public static String getThisQuarterEndTime(String date) {
        return getThisQuarterEndTime(str2date(date,1));
    }
    public static String getThisQuarterEndTime(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        int month = cal.get(Calendar.MONTH) + 1;
        if(month>=1 && month<=3){
            cal.set(Calendar.MONTH, 2);
            cal.set(Calendar.DATE, getMonthDays(Calendar.YEAR, 3));
            return FormatDate(cal.getTime(), 1);
        }else if(month>=4 && month <=6){
            cal.set(Calendar.MONTH, 5);
            cal.set(Calendar.DATE, getMonthDays(Calendar.YEAR, 6));
            return FormatDate(cal.getTime(), 1);
        }else if(month>=7 && month <=9){
            cal.set(Calendar.MONTH, 8);
            cal.set(Calendar.DATE, getMonthDays(Calendar.YEAR, 9));
            return FormatDate(cal.getTime(), 1);
        }else{
            cal.set(Calendar.MONTH, 11);
            cal.set(Calendar.DATE, getMonthDays(Calendar.YEAR, 12));
            return FormatDate(cal.getTime(), 1);
        }
    }
 
    /**
     * 取得时间格式
     * @param date  日期
     * @param style 类型 1-年(YEAR),2-月(MONTH),3-日(DAY)
     * @return
     */
    public static int getYearMonthDate(java.sql.Date date, String style) {
        Calendar cal = getCalendar(date);
        if (style.equalsIgnoreCase("YEAR") || style.equals("1")) {
            return cal.get(Calendar.YEAR);
        } else if (style.equalsIgnoreCase("MONTH") || style.equals("2")) {
            return cal.get(Calendar.MONTH)+1;
        } else if (style.equalsIgnoreCase("DAY") || style.equals("3")) {
            return cal.get(Calendar.DATE);
        } else {
            return 0;
        }
    }
    public static int getYearMonthDate(String date, String style) {
        return getYearMonthDate(str2date(date,0), style);
    }
     
    /**
     * 两时间间隔
     * @param date1 开始日期
     * @param date2 结束日期
     * @param style 类型 1-年,2-月,3-日,4-周,5时,6分,7秒
     * @return
     */
    public static double DateDiff(java.sql.Date date1, java.sql.Date date2, String style) {
        double i =0;
        double mins = date2.getTime() - date1.getTime();
        try {
            if (style.equals("1")) {
                i = (double)(mins/1000/24/3600/365); //不精确计算间隔年数
            } else if (style.equals("2")) {
                i = (double)(mins/1000/24/3600/30);//不精确计算间隔月数
            } else if (style.equals("3")) {
                i = (double)(mins/1000/24/3600);
            } else if (style.equals("4")) {
                i = (double)(mins/1000/24/3600/7);
            } else if (style.equals("5")) {
                i = (double)(mins/1000/3600);
            } else if (style.equals("6")) {
                i = (double)(mins/1000/60);
            } else if (style.equals("7")) {
                i = (double)(mins/1000);
            } else {
                i = mins;
            }
            return Tools.Format(i, 2);
        } catch (Exception e) {
            return 0;
        }
    }
    public static double DateDiff(String date1, String date2, String style) throws Exception{
        return DateDiff(str2date(date1,0),str2date(date2,0),style);
    }
 
    /**
     * 将日期加上某些天或减去天数,返回字符串
     * @param date      日期
     * @param addvalue  增加的值
     * @param style     类型 1-年,2-月,3-日,4-周,5时,6分,7秒
     * @param format
     * @return
     */
    public static String DateAdd(java.sql.Date date, int addvalue, String style, int format) {
        Calendar cal = getCalendar(date);
        if (style.equals("1")) {
            cal.add(Calendar.YEAR, addvalue);
        } else if (style.equals("2")) {
            cal.add(Calendar.MONTH, addvalue);
        } else if (style.equals("3")) {
            cal.add(Calendar.DATE, addvalue);
        } else if (style.equals("4")) {
            cal.add(Calendar.WEEK_OF_YEAR, addvalue);
        } else if (style.equals("5")) {
            cal.add(Calendar.HOUR, addvalue);
        } else if (style.equals("6")) {
            cal.add(Calendar.MINUTE, addvalue);
        } else if (style.equals("7")) {
            cal.add(Calendar.SECOND, addvalue);
        }
        return FormatDate(cal.getTime(),format);
    }
    public static String DateAdd(String date, int addvalue, String style, int format) {
        return DateAdd(str2date(date,format), addvalue, style, format);
    }
 
    /**
     * 字符型时间转化为 java.sql.Timestamp型
     * @param datestr
     * @return
     * @throws ParseException
     */
    public static java.sql.Timestamp str2time(String date)
            throws ParseException {
        return new java.sql.Timestamp(str2date(date,1).getTime());
    }
 
    /*
    private static String date2time(String datestr) throws ParseException {
        if (datestr == null) {
            return "";
        }
        try {
            java.sql.Date dt = java.sql.Date.valueOf(datestr);
            java.sql.Timestamp time = new java.sql.Timestamp(dt.getTime());
            return time.toString();
        } catch (Exception e) {
            return "";
        }
    }
    private static String time2date(String datestr) throws ParseException {
        if (datestr == null) {
            return "";
        }
        try {
            java.sql.Timestamp time = java.sql.Timestamp.valueOf(datestr);
            java.sql.Date dt = new java.sql.Date(time.getTime());
            return dt.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }*/
 
    /**
     * 前半年或后半年的第一天,只包括年月日
     * @param date  日期
     * @return
     */
    public static String getHalfYearFirstDay(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        int month = cal.get(Calendar.MONTH);
        cal.set(Calendar.MONTH, month>=6?6:0);
        cal.set(Calendar.DATE, 1);
        return FormatDate(cal.getTime(), 0);
    }
    public static String getHalfYearFirstDay(String date) {
        return getHalfYearFirstDay(str2date(date,0));
    }
 
    /**
     * 前半年或后半年的最后一天,只包括年月日
     * @param date  日期
     * @return
     */
    public static String getHalfYearLastDay(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        int month = cal.get(Calendar.MONTH);
        cal.set(Calendar.MONTH, month>=6?11:5);
        cal.set(Calendar.DATE, getMonthDays(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1));
        return FormatDate(cal.getTime(), 0);
    }
    public static String getHalfYearLastDay(String date) {
        return getHalfYearLastDay(str2date(date,0));
    }
 
    /**
     * 取月的第一天,只包括年月日
     * @param date 日期
     * @return
     */
    public static String getMonthFirstDay(java.sql.Date date){
        Calendar cal = getCalendar(date);
        cal.set(Calendar.DATE, 1);
        return FormatDate(cal.getTime(), 0);
    }
    public static String getMonthFirstDay(String date){
        return getMonthFirstDay(str2date(date, 0));
    }
     
    /**
     * 取月的最后一天,只包括年月日
     * @param date  日期
     * @return
     */
    public static String getMonthLastDay(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        cal.set(Calendar.DATE, getMonthDays(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1));
        return FormatDate(cal.getTime(), 0);
    }
    public static String getMonthLastDay(String date) {
        return getMonthLastDay(str2date(date,0));
    }
 
    /**
     * 是否月的最后一天
     * @param date  日期
     * @return
     */
    public static boolean isMonthLastDay(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        int dt = cal.get(Calendar.DATE);
        int days = getMonthDays(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1);
        return dt==days;
    }
    public static boolean isMonthLastDay(String date) {
        return isMonthLastDay(str2date(date,0));
    }
 
    /**
     * 是否月的第一天
     * @param date  日期
     * @return
     */
    public static boolean isMonthFisrtDay(java.sql.Date date) {
        Calendar cal = getCalendar(date);
        int dt = cal.get(Calendar.DATE);
        return dt==1;
    }
    public static boolean isMonthFisrtDay(String date) {
        return isMonthFisrtDay(str2date(date,0));
    }
 
    /**
     * 返回时间戳
     * @return
     */
    public static java.sql.Timestamp getTimestamp() {
        return getTimestamp(getSysTime());
    }
    public static java.sql.Timestamp getTimestamp(String date) {
        return new java.sql.Timestamp(str2date(date,1).getTime());
    }
     
    public static void main(String[] args) {
        try{
            System.out.print(DateFactory.isMonthFisrtDay("2012-2-1 11:11:11"));
        }catch(Exception e){}
    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...