知识大全 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中如何计算日期之间的天数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
/** *计算指定日期的上一天 * *@paramdateTime *  
Java--日期的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Date类:最基础的日期时
Java高级日期概念 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果你的Java程序向处在不
Java格式化日期 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java代码 &
怎样计算两个时间之间的间隔? 间隔=DategetTime()DategetTime();得出来的是毫秒数 除是秒再除是分再除是小时 记住java标准库中所有时间类都以此为基础转化的只是
JAVA里的日期处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! packagemechend
Java高级日期概念二 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 时区 TimeZon
Java获取指定日期的实现方法总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对Java中
获取当前时间和某个时间进行比较此时主要拿long型的时间值 方法如下 要使用javautilDate获取当前时间的代码如下代码如下 Datedate=newDate(); da