`

相对完善的时间处理根式

 
阅读更多

package com.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.commons.lang.StringUtils;

public class DateUtil {

    /**
     * 功能描述:格式化日期
     *
     * @param dateStr
     *             String 字符型日期
     * @param format
     *             String 格式
     * @return Date 日期
     */
    public static Date parseDate(String dateStr, String format) {
        try {
            return (Date) new SimpleDateFormat(format).parse(dateStr);
        }
        catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 功能描述:格式化日期
     *
     * @param dateStr
     *             String 字符型日期:YYYY-MM-DD 格式
     * @return Date
     */
    public static Date parseDate(String dateStr) {
        return parseDate(dateStr, "yyyy/MM/dd");
    }

    /**
     * 功能描述:格式化输出日期
     *
     * @param date
     *             Date 日期
     * @param format
     *             String 格式
     * @return 返回字符型日期
     */
    public static String format(Date date, String format) {
        String result = "";

        if (date != null) {
            result = new SimpleDateFormat(format).format(date);
        }
        return result;
    }

    /**
     * 功能描述:
     *
     * @param date
     *             Date 日期
     * @return
     */
    public static String format(Date date) {
        return format(date, "yyyy/MM/dd");
    }

    /**
     * 功能描述:返回年份
     *
     * @param date
     *             Date 日期
     * @return 返回年份
     */
    public static int getYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }

    /**
     * 功能描述:返回月份
     *
     * @param date
     *             Date 日期
     * @return 返回月份
     */
    public static int getMonth(Date date) {
        return Calendar.getInstance().get(Calendar.MONTH) + 1;
    }

    /**
     * 功能描述:返回日份
     *
     * @param date
     *             Date 日期
     * @return 返回日份
     */
    public static int getDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 功能描述:返回小时
     *
     * @param date
     *             日期
     * @return 返回小时
     */
    public static int getHour(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.HOUR_OF_DAY);
    }

    /**
     * 功能描述:返回分钟
     *
     * @param date
     *             日期
     * @return 返回分钟
     */
    public static int getMinute(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MINUTE);
    }

    /**
     * 返回秒钟
     *
     * @param date
     *             Date 日期
     * @return 返回秒钟
     */
    public static int getSecond(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.SECOND);
    }

    /**
     * 功能描述:返回毫秒
     *
     * @param date
     *             日期
     * @return 返回毫秒
     */
    public static long getMillis(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.getTimeInMillis();
    }

    /**
     * 功能描述:返回字符型日期
     *
     * @param date
     *             日期
     * @return 返回字符型日期 yyyy/MM/dd 格式
     */
    public static String getDate(Date date) {
        return format(date, "yyyy/MM/dd");
    }

    /**
     * 功能描述:返回字符型时间
     *
     * @param date
     *             Date 日期
     * @return 返回字符型时间 HH:mm:ss 格式
     */
    public static String getTime(Date date) {
        return format(date, "HH:mm:ss");
    }

    /**
     * 功能描述:返回字符型日期时间
     *
     * @param date
     *             Date 日期
     * @return 返回字符型日期时间 yyyy/MM/dd HH:mm:ss 格式
     */
    public static String getDateTime(Date date) {
        return format(date, "yyyy/MM/dd HH:mm:ss");
    }

    public static String getDateForKiosk(Date date) {
        return format(date, "yyyyMMddHHmmss");
    }

    /**
     * 功能描述:日期相加
     *
     * @param date
     *             Date 日期
     * @param day
     *             int 天数
     * @return 返回相加后的日期
     */
    public static Date addDate(Date date, int day) {
        long millis = getMillis(date) + ((long) day) * 24 * 3600 * 1000;
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(millis);
        return calendar.getTime();
    }

    /**
     * 功能描述:日期相减
     *
     * @param date
     *             Date 日期
     * @param date1
     *             Date 日期
     * @return 返回相减后的日期
     */
    public static int diffDate(Date date, Date date1) {
        return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
    }

    /**
     * 功能描述:取得指定月份的第一天
     *
     * @param strdate
     *             String 字符型日期
     * @return String yyyy-MM-dd 格式
     */
    public static String getMonthBegin(String strdate) {
        return format(parseDate(strdate), "yyyy-MM") + "-01";
    }

    /**
     * 功能描述:取得指定月份的最后一天
     *
     * @param strdate
     *             String 字符型日期
     * @return String 日期字符串 yyyy-MM-dd格式
     */
    public static String getMonthEnd(String strdate) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(parseDate(getMonthBegin(strdate)));
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DAY_OF_YEAR, -1);
        return formatDate(calendar.getTime());
    }

    /**
     * 功能描述:常用的格式化日期
     *
     * @param date
     *             Date 日期
     * @return String 日期字符串 yyyy-MM-dd格式
     */
    public static String formatDate(Date date) {
        return formatDateByFormat(date, "yyyy-MM-dd");
    }

    /**
     * 功能描述:以指定的格式来格式化日期
     *
     * @param date
     *             Date 日期
     * @param format
     *             String 格式
     * @return String 日期字符串
     */
    public static String formatDateByFormat(Date date, String format) {
        String result = "";
        if (date != null) {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                result = sdf.format(date);
            }
            catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 功能描述:由系统时间来构造格式化日期
     *
     * @param date
     *             Date 日期
     * @param simpledataformat
     *             String 格式
     * @return String 日期字符串
     */
    public static String getSystem_Date(long time) {
        Date date = new Date(time);
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return df.format(date);
    }

    /**
     * 功能描述:由系统时间来构造格式化日期
     *
     * @param date
     *             Date 日期
     * @param simpledataformat
     *             String 格式
     * @return String 日期字符串
     */
    public static String getSystem_Date(Date date) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return df.format(date);
    }

    public static String formatDate(Date date, String style) {
        return formatDateByFormat(date, style);
    }

    public static String turnDate(String showDate, String format, int interDay) {
        // 日期加指定天数
        Calendar cal = Calendar.getInstance();
        Date tempDate_001 = DateUtil.parseDate(showDate, format);
        if (null == tempDate_001) {
            return null;
        }
        cal.setTime(tempDate_001);
        cal.add(Calendar.DAY_OF_MONTH, interDay);
        String next = DateUtil.formatDate(cal.getTime(), format);
        return next;
    }

    public static void main(String[] args) {
        // Date d = new Date();
        // System.out.println(d.toString());
        // System.out.println(formatDate(d).toString());
        // System.out.println(getMonthBegin(formatDate(d).toString()));
        // System.out.println(getMonthBegin("2008/07/19"));
        // System.out.println(getMonthEnd("2008/07/19"));
        // System.out.println(addDate(d, 15).toString());
        // System.out.println(getDateForKiosk(new Date()).toString());
        // System.out.println(DateUtil.parseDate("2012-0", "yyyy-MM-dd"));
        // System.out.println(DateUtil.turnDate("20120217", "yyyyMMdd", -15));
        System.out.println(DateUtil.getDatesBetween2Date("20120101", "20120104"));
    }

    /**
     * 获得两个日期(字符串)之间的所有日期
     *
     * @param start_date
     *             String 开始日期 EX:“20120101” 强制输入参数
     * @param end_date
     *             String 结束日期 EX:“20120102” 强制输入参数
     * @return
     */
    public static List<String> getDatesBetween2Date(String start_date, String end_date) {
        List<String> result = new ArrayList<String>();
        try {
            start_date = StringUtils.trim(start_date);
            end_date = StringUtils.trim(end_date);
            if (StringUtils.isEmpty(start_date) || StringUtils.isEmpty(end_date)) {
                return result;
            }

            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            int recAfter = diffDate(sdf.parse(end_date), sdf.parse(start_date));
            if (recAfter < 0) {
                String temp = start_date;
                start_date = end_date;
                end_date = temp;
                recAfter = -1 * recAfter;
            }
            result.add(start_date);
            String tempStart_date = new String(start_date.getBytes("UTF-8"), "UTF-8");
            while (recAfter > 0) {
                tempStart_date = DateUtil.turnDate(tempStart_date, "yyyyMMdd", 1);
                result.add(tempStart_date);
                recAfter--;
            }

        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}

分享到:
评论

相关推荐

    根式化简(未成熟)VB制作

    2. **错误处理**:增加对输入的验证,确保输入的根式是合法且可以处理的,同时处理可能的运行时错误。 3. **用户界面**:如果程序是作为应用程序发布,可以考虑设计一个友好的用户界面,方便用户输入根式并查看结果...

    2018年秋九年级数学上册第21章二次根式专题训练根式大与小_穴作比较练习新版华东师大版

    这种做法虽然在计算上可能相对繁琐,但它使得根式之间的比较变得更加直接和明确。 在教学中,教师应该指导学生在不同的情况下灵活运用这些方法。比如,对于含有负数的二次根式,绝对值比较法通常是首选;当根号下的...

    2020春八年级数学下册第十六章二次根式16.2二次根式的乘除第2课时二次根式的除法同步课件新版新人教版20200324126

    这篇资料主要涵盖了初中八年级数学下册第十六章关于二次根式乘除的第二课时内容,特别是二次根式的除法。以下是对这些知识点的详细解释: 1. **二次根式的除法法则**:在进行二次根式的除法运算时,我们需要将除法...

    专题资料(2021-2022年)二次根式教材分析.doc

    【二次根式】是中学数学中的重要概念,它在实数和整式的基础上进行扩展,进一步完善了学生对数与式的理解。二次根式在初中阶段的数学学习中占有重要地位,是数与式章节的最后一个部分,对于式子的变形处理具有总结性...

    16.2(2)同类二次根式-经典练习题.docx

    "同类二次根式经典练习题" 同类二次根式是数学中的一个重要概念,对于高中生的数学学习具有重要影响。本文将通过对同类二次根式的经典练习题的分析,总结出相关的知识点。 一、选择题 1. 下列根式中,与是同类二...

    二次根式练习题精选.doc

    在处理含有二次根式的方程时,我们必须注意等式两边的性质一致性。这意味着,如果对等式的一边执行了某种操作(如平方),那么等式的另一边也必须执行相同的操作。此外,根号下的表达式必须是非负的,这一点是根式有...

    初三数学二次根式经典习题精品.pdf

    在处理分母中含有根号的分数时,通过乘以共轭来消除分母中的根号,可以使分母成为有理数,从而简化运算。这一技巧在解决复杂数学问题时尤为重要,因为它可以将问题转化为较为简单的形式,便于计算和理解。 本习题集...

    中考数学总复习二次根式全面PPT课件.pptx

    在处理最简二次根式时,我们要求被开方数不含分母,且不能包含能开得尽方的因数或因式。同类二次根式则是指化简后被开方数相同的二次根式,它们可以在加减运算中合并。 二次根式的运算包括加减法和乘除法。在加减法...

    2021人教版八年级下册数学 二次根式 本章测试题(附答案).pdf

    2021人教版八年级下册数学二次根式的本章测试题的知识点涉及到二次根式的定义、性质、运算以及它们在解决问题中的应用。以下是基于给出的文件内容整理的相关知识点: 一、二次根式的定义与性质 1. 二次根式指的是...

    二次根式综合复习(提优).pdf

    【知识点一:二次根式的概念】 二次根式是数学中的一种特定表达形式,形如√a,其中a称为被开方数。一个二次根式只有当a是非负数时才有意义,即a≥0。这是因为二次根式表示的是a的平方根,而平方根的定义是平方等于...

    二次根式的学案与练习题

    二次根式的学案与练习题 在初中数学的海洋中,二次根式是极为重要的一环,它不仅仅是无理数与有理数之间的桥梁,更是实数体系构建不可或缺的基础。掌握二次根式,对于理解更复杂的数学概念和解决实际问题,具有...

    人教版初二数学下册:二次根式的加减(提高)知识讲解.doc

    在识别了同类二次根式之后,合并它们就变得相对简单,我们只需要将系数进行加减操作,而保留被开方数和根指数不变。 进行二次根式的加减时,其运算实质是合并同类项。这一过程通常分为几个明确的步骤:首先需要将二...

    2017秋八年级数学上册2.7二次根式第3课时二次根式的混合运算教案1(新版)北师大版.pdf

    而二次根式的混合运算是中学数学教学中的一个重要内容,它不仅涉及到对二次根式概念的理解,还涉及到一系列的计算技巧和方法的应用。在2017秋季学期八年级数学上册的课程设计中,教材编排者精心设置了关于二次根式...

    新人教八年级数学下册二次根式总复习PPT课件.pptx

    例如,化简 \( \sqrt{a^2} - \sqrt{b^2} - \sqrt{(a-b)^2} \) 时,需要考虑 \( a \) 和 \( b \) 的正负关系,以决定绝对值的处理方式。在表达式 \( \sqrt{a^2} \) 和 \( a^2 \) 之间,前者表示 \( a \) 的非负平方根...

    无聊的化简几次根式.py

    化简几次根式,适合中学生使用...喵

    2015新北师大版八年级上册2.7 二次根式(课时2)-二次根式的化简同步练习题往年数学知识点.doc

    通过以上知识点的讲解,我们可以看到,这份同步练习题覆盖了二次根式的化简、最简二次根式的识别、同类二次根式的合并、代数式的化简和计算等多个数学知识点,这些都是八年级学生在学习二次根式时需要掌握的重点。...

    二次根式混合运算125题(有答案)ok.doc

    在中学数学教育中,二次根式混合运算是一项基础且重要的技能,它不仅要求学生掌握基本的加减乘除运算,还需了解根式运算的特殊性质。本文将详细探讨二次根式混合运算的原理、常见题型以及解决策略,结合“二次根式...

    2021年二次根式经典难题.docx

    【二次根式的基本概念】 二次根式是数学中一种重要的表达形式,通常表示为√a,其中a代表被开方数。一个二次根式有意义的条件是被开方数必须是非负数,即a ≥ 0。在实数范围内,二次根式总是给出非负的平方根。 ...

    二次根式基本运算(根式加减)分母有理化讲义.docx

    描述部分没有提供具体信息,但根据标题可以推断,文档可能包含了对二次根式运算的详细讲解,包括如何化简和处理分母中有二次根式的情况。 【标签解析】 由于标签为空,无法直接获取特定知识点,但从标题和描述中...

    数学九年级上华东师大版22.1 二次根式精选.doc

    在处理二次根式时,我们需要理解以下几个关键知识点: 1. **定义**:二次根式是指形如√a的形式,其中a代表实数,且a≥0。√a表示a的非负平方根,即√a = b,意味着b² = a。 2. **类型**:二次根式分为最简二次...

Global site tag (gtag.js) - Google Analytics