`

相对完善的时间处理根式

 
阅读更多

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. **用户界面**:如果程序是作为应用程序发布,可以考虑设计一个友好的用户界面,方便用户输入根式并查看结果...

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

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

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

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

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

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

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

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

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

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

    二次根式练习题精选.doc

    二次根式是初中数学中的一个重要概念,主要涉及平方根、算术平方根以及与之相关的运算规则。在解决这类问题时,我们需要理解以下几个关键知识点: ...通过这样的练习题,可以有效地巩固和提高学生的二次根式处理能力。

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

    通过本节课的学习,学生将进一步理解二次根式的概念,熟悉化简步骤,以及如何处理根号内含有字母的二次根式。同时,鼓励学生独立思考,选择合适的解题方法,并在小组讨论中总结运算技巧。 总的来说,本课时的教学...

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

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

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

    二次根式是初中数学的重要概念,它涉及到无理数的表示和运算。二次根式通常表示为√a,其中a代表非负数,因为二次根式仅对非负数有定义。二次根式有两个关键性质:一是双重非负性,即√a² = a(当a≥0),二是...

    二次根式的学案与练习题

    二次根式是初中数学的核心概念,它连接了无理数和有理数的世界,对于实数系统的构建至关重要。本文将深入探讨二次根式的基本定义、性质及其在代数式化简中的应用,同时通过一系列例题来巩固理解。 首先,二次根式...

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

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

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

    在九年级数学上册的第21章,二次根式专题训练主要关注的是如何比较二次根式的大小。这个章节的学习涵盖了多种比较方法,包括算术...掌握这些技巧能帮助学生更好地理解和处理二次根式的大小比较问题,提高解题效率。

    无聊的化简几次根式.py

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

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

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

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

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

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

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

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

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

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

    - 定义:同类二次根式是指化简成最简二次根式后,被开方数相同的一类二次根式。 - 判断标准:判断是否为同类二次根式,需先化简至最简形式,然后比较被开方数是否相同,不考虑根号外的因式。 - 合并规则:合并...

    八下第一章 二次根式测试卷及答案含细目表4.doc

    4. **绝对值的处理**:选择题第5题中,涉及到绝对值的性质,即绝对值大于等于零,因此需要确定a的取值范围使得表达式成立。 5. **等边三角形的性质**:选择题第7题和填空题第14题都与等边三角形有关,包括等边...

Global site tag (gtag.js) - Google Analytics