知识大全 java日期计算简析

Posted

篇首语:学习如赶路,不能慢一步。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java日期计算简析相关的知识,希望对你有一定的参考价值。

  今天主要学习的日期操作主要是—–获取日期字段(年 月 日 年中的天数 年中的周数等) 计算两个时间的间隔日期(年 月 天) 根据开始时间间隔时间计算结束时间         关于Calendar日历的字段值 一些比较重要的如下         常规的年月日时分秒         static int YEAR        指示年的 get 和 set 的字段数字         static int MONTH        指示月份的 get 和 set 的字段数字         static int DATE        get 和 set 的字段数字 指示一个月中的某天         static int HOUR        get 和 set 的字段数字 指示上午或下午的小时         static int MINUTE        get 和 set 的字段数字 指示一小时中的分钟        static int SECOND        get 和 set 的字段数字 指示一分钟中的秒         比较有用的几个字段         static int DAY_OF_YEAR        get 和 set 的字段数字 指示当前年中的天数         static int WEEK_OF_YEAR        get 和 set 的字段数字 指示当前年中的星期数         static int WEEK_OF_MONTH        get 和 set 的字段数字 指示当前月中的星期数         static int DAY_OF_WEEK        get 和 set 的字段数字 指示一个星期中的某天         下面是关于日期计算的测试代码 虽然较长 但是调理很清晰         /**        * 日期类Date Calendar测试类        *        */        package date_test;        import java text DateFormat;        import java text ParseException;        import java text SimpleDateFormat;        import java util Calendar;        import java util Date;        /**        * @author wkupaochuan        * @time Jun         * @version V         *   

    * 实现的接口如下         * 根据开始时间和间隔天数计算结束时间 Date calculateEndDate(Date sDate int days)        * 根据开始时间 结束时间 间隔类型(年 月 日)计算间隔时间 int calInterval(Date sDate Date eDate String type)        * 输出日历实例(当前时间)的各个字段值 void printFields(Calendar cNow)        * 判定某个年份是否是闰年 boolean isLeapYear(int year)        * 比较两个日期的大小 int pareDate(Date sDate Date eDate)        */        public class Calendar_test         public static void main(String agrs[])                //获取日历实例并赋予当前时间        Calendar cNow = Calendar getInstance()         cNow setTime(new Date())         //输出日历相关字段        printFields(cNow)         /*计算两个日期的时间间隔*/        //开始时间        Date sDate = new Date()         //结束时间        try         Date eDate = (new SimpleDateFormat( yyyy MM dd )) parse( )         //计算结果并输出        System out println( 今天与 相隔 + calInterval(sDate eDate d ) + 天 )         catch (ParseException e)         // TODO Auto generated catch block        e printStackTrace()                 /*计算结束日期并输出*/        SimpleDateFormat df = (SimpleDateFormat)DateFormat getInstance()         df applyPattern( yyyy MM dd )         System out println( 从几天开始计算 天后是 + df format(calculateEndDate(sDate )))                 /**        * 根据起始日期和间隔时间计算结束日期        *        * @param sDate开始时间        *        * @param days间隔时间        *        * @return 结束时间        * */        public static Date calculateEndDate(Date sDate int days)                //将开始时间赋给日历实例        Calendar sCalendar = Calendar getInstance()         sCalendar setTime(sDate)         //计算结束时间        sCalendar add(Calendar DATE days)         //返回Date类型结束时间        return sCalendar getTime()                 /**            * 计算两个日期的时间间隔        *        * @param sDate开始时间        *        * @param eDate结束时间        *        * @param type间隔类型( Y/y 年  M/m 月  D/d 日)        *        * @return interval时间间隔        * */        private static int calInterval(Date sDate Date eDate String type)                //时间间隔 初始为         int interval = ;        /*比较两个日期的大小 如果开始日期更大 则交换两个日期*/        //标志两个日期是否交换过        boolean reversed = false;        if(pareDate(sDate eDate) > )                Date dTest = sDate;        sDate = eDate;        eDate = dTest;        //修改交换标志        reversed = true;                    /*将两个日期赋给日历实例 并获取年 月 日相关字段值*/        Calendar sCalendar = Calendar getInstance()         sCalendar setTime(sDate)         int sYears = sCalendar get(Calendar YEAR)         int sMonths = sCalendar get(Calendar MONTH)         int sDays = sCalendar get(Calendar DAY_OF_YEAR)         Calendar eCalendar = Calendar getInstance()         eCalendar setTime(eDate)         int eYears = eCalendar get(Calendar YEAR)         int eMonths = eCalendar get(Calendar MONTH)         int eDays = eCalendar get(Calendar DAY_OF_YEAR)         //年        if(cTrim(type) equals( Y ) || cTrim(type) equals( y ))                interval = eYears sYears;        if(eMonths < sMonths)                interval;                        //月        else if(cTrim(type) equals( M ) || cTrim(type) equals( m ))                interval = * (eYears sYears)         interval += (eMonths sMonths)                 //日        else if(cTrim(type) equals( D ) || cTrim(type) equals( d ))                interval = * (eYears sYears)         interval += (eDays sDays)         //除去闰年天数        while(sYears < eYears)                if(isLeapYear(sYears))                interval;                ++sYears;                            //如果开始日期更大 则返回负值        if(reversed)                interval = interval;                //返回计算结果        return interval;                /**        * 输出日历相关字段(当前日期)        *        * @param cNow当前时间        *        * @return null        *        * 各个字段值都可以用get(field)得到 也可以用set(field value)函数修改        * */        private static void printFields(Calendar cNow)                //先用Date类型输出验证        SimpleDateFormat df = (SimpleDateFormat)DateFormat getInstance()         df applyPattern( yyyy MM dd  HH:mm:ss )         System out println( 标准日期 + df format(new Date()))         //逐个输出相关字段值        System out print( 年份 + cNow get(Calendar YEAR) + \\t )         //月份有问题(这里的月份开始计数为 )        System out print( 月份 + cNow get(Calendar MONTH) + \\t )         System out print( 日期 + cNow get(Calendar DATE) + \\t )         System out print( 小时 + cNow get(Calendar HOUR) + \\t )         System out print( 分钟 + cNow get(Calendar MINUTE) + \\t )         System out println( 秒钟 + cNow get(Calendar SECOND))         //本年的第几天 在计算时间间隔的时候有用        System out println( 一年中的天数 + cNow get(Calendar DAY_OF_YEAR))         System out println( 一年中的周数 + cNow get(Calendar WEEK_OF_YEAR))         //即本月的第几周        System out println( 一月中的周数 + cNow get(Calendar WEEK_OF_MONTH))         //即一周中的第几天(这里是以周日为第一天的)        System out println( 一周中的天数 + cNow get(Calendar DAY_OF_WEEK))                 /**        * 判定某个年份是否是闰年        *        * @param year待判定的年份        *        * @return 判定结果        * */        private static boolean isLeapYear(int year)                return (year% == || (year% == && year% != ))                 /**        *        * 字符串去除两头空格 如果为空 则返回 如果不空 则返回该字符串去掉前后空格        *        * @param tStr输入字符串        *        * @return 如果为空 则返回 如果不空 则返回该字符串去掉前后空格        *        */        public static String cTrim(String tStr)                String ttStr = ;        if (tStr == null)                else                ttStr = tStr trim()                 return ttStr;                /**            * 比较两个Date类型的日期大小        *        * @param sDate开始时间        *        * @param eDate结束时间        *        * @return result返回结果( 相同  前者大  后者大)        * */        private static int pareDate(Date sDate Date eDate)                int result = ;        //将开始时间赋给日历实例        Calendar sC = Calendar getInstance()         sC setTime(sDate)         //将结束时间赋给日历实例        Calendar eC = Calendar getInstance()         eC setTime(eDate)         //比较        result = pareTo(eC)         //返回结果        return result;                        程序执行结果如下 cha138/Article/program/Java/hx/201311/26056

相关参考

知识大全 Java中如何计算日期之间的天数

Java中如何计算日期之间的天数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 java里面一些时间的计算

/**    *计算指定日期的上一天    *    *@paramdateTime    *         

知识大全 Java--日期的使用

Java--日期的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Date类:最基础的日期时

知识大全 Java高级日期概念

Java高级日期概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果你的Java程序向处在不

知识大全 Java格式化日期

Java格式化日期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java代码   &

知识大全 几个常见的关于日期的问题解决方法

  怎样计算两个时间之间的间隔?  间隔=DategetTime()DategetTime();得出来的是毫秒数  除是秒再除是分再除是小时    记住java标准库中所有时间类都以此为基础转化的只是

知识大全 JAVA里的日期处理

JAVA里的日期处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  packagemechend

知识大全 Java高级日期概念二

Java高级日期概念二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  时区    TimeZon

知识大全 Java 获取指定日期的实现方法总结

Java获取指定日期的实现方法总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对Java中

知识大全 java获取当前日期时间代码

  获取当前时间和某个时间进行比较此时主要拿long型的时间值  方法如下  要使用javautilDate获取当前时间的代码如下代码如下   Datedate=newDate();  da