关闭

时间处理工具类

标签: java时间处理工具
445人阅读 评论(0) 收藏 举报
分类:
import java.sql.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
*
* 日期操作的工具类
*
* @author huwei(jshuwei.org.cn)
* @since 1.0
*
*/
public class DateUtil {

    private static String defDtPtn = "yyyy-MM-dd HH:mm:ss";// 缺省日期格式

    /**
     * 计算给定时间至今的天数
     *
     * @since 1.1
     * @param date
     *            给定的时间
     * @return 给定时间至今的天数
     */
    public static long date2day(String date) {
        long day = 0;
        DateFormat df = DateFormat.getDateInstance();
        try {
            long old = df.parse(date).getTime();
            long now = new java.util.Date().getTime();
            long secs = now - old;
            day = secs / (1000 * 24 * 60 * 60);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return day;
    }

    /**
     * 格式化给定时间后day天的时间
     *
     * @since 1.0
     * @param date
     *            需要格式化的时间
     * @param day
     *            增加的天数
     * @return 给定时间的后day天的格式化字符串(如:2008-11-22)
     */
    public static String formatDate(java.util.Date date, Integer day) {
        String str = "";
        str = new Date(date.getTime() day * 24 * 60 * 60).toString();
        return str;
    }

    /**
     * 格式化给定时间
     *
     * @param date
     *            需要格式化的时间
     * @return 给定时间的格式化字符串(如:2008-11-22)
     */
    public static String formatDate(java.util.Date date) {
        return new Date(date.getTime()).toString();
    }

    /**
     * 得到当前年
     *
     * @since 1.0
     * @return 返回当前年(YYYY)
     */
    public static int getYear() {
        return Calendar.getInstance().get(Calendar.YEAR);
    }

    /**
     * 得到当前月
     *
     * @since 1.0
     * @return 返回当前月(1~12)
     */
    public static int getMonth() {
        return Calendar.getInstance().get(Calendar.MONTH) 1;
    }

    /**
     * 得到当前日
     *
     * @since 1.0
     * @return 返回当前日(1~31)
     */
    public static int getDay() {
        return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 得到当前年
     *
     * @since 1.0
     * @return 返回当前年(YY)
     */
    public static String getYear2() {
        int year = getYear();
        return StringUtil.Integer2String(year, "1986").substring(2, 4);
    }

    /**
     * 得到当前月
     *
     * @since 1.0
     * @return 返回当前月(01~12)
     */
    public static String getMonth2() {
        int month = getMonth();
        if (month < 10) {
            return "0" StringUtil.Integer2String(month, "00");
        }
        return StringUtil.Integer2String(month, "00");
    }

    /**
     * 得到当前日
     *
     * @since 1.0
     * @return 返回当前日(01~31)
     */
    public static String getDay2() {
        int day = getDay();
        if (day < 10) {
            return "0" StringUtil.Integer2String(day, "00");
        }
        return StringUtil.Integer2String(day, "00");
    }

    /**
     * 得到指定格式的当前时间
     *
     * @param format
     *            格式化形式(年用YY/YYYY表示;月用M/MM表示;日用D/DD表示,之间任意任序组合),<br />
     *            如"YYYY-MM-DD"返回形如:1986-12-17<br />
     *            如"YY-MM"返回形如:86-12<br />
     *            如"YY年MM月"返回形如:86年12月……
     * @since 1.0
     * @return 返回指定格式的当前时间
     *
     */
    public static String getDate(String format) {
        format = format.replace("YYYY", getYear() "");
        format = format.replace("YY", getYear2());
        format = format.replace("MM", getMonth2());
        format = format.replace("M", getMonth() "");
        format = format.replace("DD", getDay2());
        format = format.replace("D", getDay() "");
        return format;
    }

    /**
     * 将字符串按指定格式解析成日期对象
     *
     * @since 1.1
     * @param dateStr
     *            需要进行转换的日期字符串
     * @param pattern
     *            日期字符串的格式
     * @return "yyyy-MM-dd HH:mm:ss"形式的日期对象
     */
    public static java.util.Date parseDate(String dateStr, String pattern) {
        SimpleDateFormat DATEFORMAT = new SimpleDateFormat(defDtPtn);
        DATEFORMAT.applyPattern(pattern);
        java.util.Date ret = null;
        try {
            ret = DATEFORMAT.parse(dateStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        DATEFORMAT.applyPattern(defDtPtn);
        return ret;
    }

    /**
     * 计算详细年龄
     *
     * @since 1.1
     * @param birthdayStr
     *            出生日期 格式"YYYY-MM-DD"
     * @return 指定日期至今天的年龄
     */
    public static String countAge(String birthdayStr) {
        String age = "";
        if (birthdayStr != null && birthdayStr.length() == 8) {
            java.util.Date birthday = parseDate(birthdayStr, "YYYY-MM-DD");

            if (birthday != null) {
                Calendar calendar = Calendar.getInstance();
                int year1 = getYear();
                int month1 = StringUtil.String2Integer(getMonth2(), 0);
                int day1 = StringUtil.String2Integer(getDay2(), 00);

                calendar.setTime(birthday);
                int year2 = calendar.get(Calendar.YEAR);
                int month2 = calendar.get(Calendar.MONTH) 1;
                int day2 = calendar.get(Calendar.DATE);

                int year = year1 - year2;
                int month = month1 - month2;
                int day = day1 - day2;

                if (month < 0) {
                    year = year - 1;
                    month = 12 month1 - month2;
                }

                if (day < 0) {
                    month = month - 1;
                    if (month < 0) {
                        year = year - 1;
                        month = 11;
                    }
                    int lastMonthDay = 0;
                    if (month1 == 0) {
                        lastMonthDay = getDayOfMonth(12, year1 - 1);
                    } else {
                        lastMonthDay = getDayOfMonth(month1, year1);
                    }
                    day = lastMonthDay day1 - day2;
                }

                if (year > 5) {
                    age = year "岁";
                } else if (year > 0) {
                    if (month == 0) {
                        age = year "岁";
                    } else {
                        age = year "岁" month "月";
                    }
                } else {
                    if (month > 5) {
                        age = month "月";
                    } else if (month > 0) {
                        age = month "月" day "天";
                    } else {
                        age = day "天";
                    }
                }
            }
        }

        return age;
    }

    /**
     * 得到指定年月的天数
     *
     * @since 1.1
     * @param month
     *            指定月份
     * @param year
     *            指定的年份
     * @return 天数
     */
    public static int getDayOfMonth(int month, int year) {
        int ret = 0;
        boolean flag = false;

        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            flag = true;
        }

        switch (month) {
        case 1:
            ret = 31;
            break;
        case 2:
            if (flag) {
                ret = 29;
            } else {
                ret = 28;
            }
            break;
        case 3:
            ret = 31;
            break;
        case 4:
            ret = 30;
            break;
        case 5:
            ret = 31;
            break;
        case 6:
            ret = 30;
            break;
        case 7:
            ret = 31;
            break;
        case 8:
            ret = 31;
            break;
        case 9:
            ret = 30;
            break;
        case 10:
            ret = 31;
            break;
        case 11:
            ret = 30;
            break;
        case 12:
            ret = 31;
            break;
        default:
            break;
        }
        return ret;
    }

    /**
     * 计算某天是星期几
     *
     * @since 1.1
     * @param p_date
     *            日期字符串
     * @return 星期
     */
    public static int whatDayIsSpecifyDate(String p_date) {
        // 2002-2-22 is friday5
        long differenceDays = 0L;
        long m = 0L;
        differenceDays = signDaysBetweenTowDate(p_date, "2002-2-22");

        m = (differenceDays % 7);
        m = m 5;
        m = m > 7 ? m - 7 : m;
        return Integer.parseInt(m "");
    }

    /**
     * 计算两日期间相差天数.
     *
     * @since 1.1
     * @param d1
     *            日期字符串
     * @param d2
     *            日期字符串
     * @return long 天数
     */
    public static long signDaysBetweenTowDate(String d1, String d2) {
        java.sql.Date dd1 = null;
        java.sql.Date dd2 = null;
        long result = -1l;
        try {
            dd1 = java.sql.Date.valueOf(d1);
            dd2 = java.sql.Date.valueOf(d2);
            result = signDaysBetweenTowDate(dd1, dd2);
        } catch (Exception ex) {
            result = -1;
        }
        return result;
    }

    /**
     * 计算两日期间相差天数.
     *
     * @since 1.1
     * @param d1
     *            开始日期 日期型
     * @param d2
     *            结束日期 日期型
     * @return long 天数
     */
    public static long signDaysBetweenTowDate(java.sql.Date d1, java.sql.Date d2) {
        return (d1.getTime() - d2.getTime()) / (3600 * 24 * 1000);
    }
}

0
0
查看评论

时间处理工具类(DateUtil)

package com.lvmama.comm.utils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util...
  • jakeswang
  • jakeswang
  • 2016-06-23 15:38
  • 2073

时间处理工具类,和使用字符串或者日期处理需要注意的问题

数据库是DateTime类型 项目开发中:对时间的使用出现两种方式: 1.使用字符串来表示时间 2.使用Date来表示时间 1.先说说第一种方式会出现的问题:数据从后台传递到后台显示的时候不会有问题出现,但是如果前台提交数据,这个数据不是时间格式的数据的时候,不填的时候,在spring mvc中...
  • shenbushen
  • shenbushen
  • 2016-11-04 17:57
  • 732

java处理日期工具类(一)

package util; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import ja...
  • qq_17555933
  • qq_17555933
  • 2016-06-23 17:28
  • 3828

前端js日期工具类

function NewDate(str) { if(!str) return ""; str = str.split('-'); var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1...
  • u010440155
  • u010440155
  • 2015-01-06 15:26
  • 464

Android工具类(时间转换)

上一篇Android工具类(历史最全) 自己项目时间工具类,拿出来给大家分享下 日期转汉字(一) 日期转换成格式化字符串(二) 格式化中文日期,转换成"-"分隔的日期格式(三) 获得某一日期对应的星期五是哪一天(四) 获得某一日期对应的星期一是哪一天.(五) ...
  • qq_32368129
  • qq_32368129
  • 2016-12-23 16:09
  • 137

JS时间处理工具类

//1、日期格式化Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate...
  • Cantus_hjk
  • Cantus_hjk
  • 2017-11-22 16:04
  • 60

Android工具类--时间工具类

获取时间日期的工具类
  • dl10210950
  • dl10210950
  • 2016-08-29 20:57
  • 2718

日期时间处理工具类总结

日期时间处理工具类总结
  • cheng900716lihai
  • cheng900716lihai
  • 2016-08-30 16:50
  • 123

java时间处理工具类--DateUtils

package com.hexiang.utils; /** * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ import java.util.*; import java.text.*; impor...
  • u012151556
  • u012151556
  • 2015-07-02 22:18
  • 290

JAVA时间处理工具类

JAVA时间处理工具类
  • sabuhaha
  • sabuhaha
  • 2010-12-23 10:58
  • 566
    个人资料
    • 访问:373098次
    • 积分:4097
    • 等级:
    • 排名:第8941名
    • 原创:93篇
    • 转载:138篇
    • 译文:2篇
    • 评论:56条
    最新评论