`

JAVA日期加减运算 转

阅读更多

JAVA日期加减运算

文章分类:Java编程

1.用java.util.Calender来实现,这种实现方式才是非常准确的

Java代码 复制代码
  1. 	public static String getBeforeDate(Date date,int days)
    	{
    		SimpleDateFormat df = new SimpleDateFormat(FORMAT_DAY);
    		Calendar calendar = Calendar.getInstance();   
    		calendar.setTime(date);
    		calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) - days);
    		return df.format(calendar.getTime());
    	}
    	
    	public static String getAfterDate(Date date,int days)
    	{
    		SimpleDateFormat df = new SimpleDateFormat(FORMAT_DAY);
    		Calendar calendar = Calendar.getInstance();   
    		calendar.setTime(date);
    		calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + days);
    		return df.format(calendar.getTime());
    	}

 

 

2.用java.text.SimpleDateFormat和java.util.Date来实现

Java代码 复制代码
  1. public static String getBeforeDate(Date date,int days)   
  2. {   
  3.     SimpleDateFormat df = new SimpleDateFormat(FORMAT_DAY);   
  4.     Date beforeDate = new Date(date.getTime() - days * 24 * 60 * 60 * 1000);   
  5.     return df.format(beforeDate);   
  6. }   
  7.   
  8. public static String getAfterDate(Date date,int days)   
  9. {   
  10.     SimpleDateFormat df = new SimpleDateFormat(FORMAT_DAY);   
  11.     Date beforeDate = new Date(date.getTime() + days * 24 * 60 * 60 * 1000);   
  12.     return df.format(beforeDate);   
  13. }  

 

 

我自己解决的问题--计算两个日期的天数差


 楼主发表于:2009-05-11 01:25:53刚碰到这个问题以为很简单,只要把两个Date.getTime()相减,再/1000/60/60/24就可以了,但实作起来却发现有很大问题,就是小数问题。
  开始以为只要把得到的数强制转换成Int型就可以了,但得到的答案却总是有错误,如:相邻的两天相差的天数经常是0点几,取整后变成相差0天了,但又不能简单的向上取整或直接将结果加1了事,因为如果让两个相等的日期进行比较,结果肯定是0和1之间的某个小数,如果向上取整或直接将结果加1结果就变成两个相同的日期却相差1天。经分析发现问题出在忽略了“时”“分”“秒”“毫秒”,原来我只是把注意力放在“日期”上,导致日期虽然正确,但具体的时、分、秒、毫秒被系统取作但前时间,由于系统延迟,两个日期的时、分、秒、毫秒又不相同,最后导致得数不能被整除。
  针对问题所在我将参加比较的两个日期的时、分、秒、毫秒全部取为0,问题才圆满解决

public int Calculate(long date1,long date2){//计算目标日期date1与指针日期date2的天数差
long c = date2 - date1;
return (int)(c / 1000 / 60 / 60 / 24);
}
*********************************************************
public long fDate(Date date){//日期规范函数,用来规范Calculate的参数
ca = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
ca.setTime(date);
ca.set(Calendar.HOUR_OF_DAY, 0); //小时取0
ca.set(Calendar.MINUTE, 0); //分取0
ca.set(Calendar.SECOND, 0); //秒取0
ca.set(Calendar.MILLISECOND, 0); //毫秒取0
return ca.getTime().getTime();
}

 

 

个人签名

-------------------------------------

 

图盾 淘宝保护 保护图片 图片防盗


 

分享到:
评论
2 楼 fireinwind 2010-08-17  
芒果冰爽 写道
calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) - days);  


直接calendar.add(Calendar.DAY_OF_YEAR,days)
就可以了,干啥这么复杂




...哦,我试试. 
1 楼 芒果冰爽 2010-08-16  
calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) - days);  


直接calendar.add(Calendar.DAY_OF_YEAR,days)
就可以了,干啥这么复杂

相关推荐

    日期类的加减及java中所以日期类的操作算法大全

    本文将深入探讨Java中的日期类操作,包括日期的加减运算,以及如何利用不同的日期类进行高效的时间管理。 ### 一、日期类的基本操作 #### 1. 使用Calendar类 `Calendar`类是Java中处理日期和时间的核心类之一,它...

    日期操作,转日期格式,加减日期,日期详解

    在提供的文件列表中,DateAccount.java可能是包含日期操作逻辑的Java源代码文件,而加减日期.txt和转日期格式.txt很可能是详细说明这些操作的文本文件。通过阅读这些文件,你可以更深入地理解如何在实际代码中实现...

    java日期转化操作大全

    在Java 8之前,日期的加减运算相对复杂,通常需要结合`Calendar`类。自Java 8起,`TemporalAdjusters`和`Period`类提供了更直观的方法。 1. 使用`Calendar`类进行加减: ```java Calendar calendar = Calendar....

    java获取年月日,加减运算

    //字符串转日期 String format = simpleDateFormat.format(parse); //日期转字符串 System.out.println(parse +"fsgfsf"+format ); cal.setTime(parse); int year1= cal.get(Calendar.YEAR);//获取年份 ...

    日期类加减的年月日版本

    在实际开发中,日期加减常用于计算有效期、计划任务、日历应用等场景。例如,计算信用卡到期日、确定项目交付期限、规划节假日等。 10. **最佳实践**: 使用日期类时,应遵循良好的编程习惯,如避免使用字符串...

    java语言日期处理大全

    `java.util.Calendar`类提供了日期操作的高级功能,如`add()`方法可以对日期进行加减运算。例如,`now.add(Calendar.DAY_OF_YEAR, -(365*2))`表示减去两年。 8. **日期比较**: `equals()`, `before()`, `after()...

    JAVA日期操作类详细讲解

    在日期运算中,`java.time`包提供了`plusDays()`, `minusMonths()`, `until()`等方法,使得日期的加减运算变得直观且方便。另外,`TemporalAdjusters`接口提供了一些实用的调整器,比如`firstDayOfMonth()`和`...

    应用java实现日期型字符串和日期之间的相互转换(源代码)

    Java 8的日期时间API提供了丰富的日期运算方法,如加减天数、月份等。 7. **日期比较:** 可以通过compareTo方法比较两个日期对象的大小。 在"9_4_日期处理组件"的源代码中,可能会包含以上所述的转换功能,以及...

    mybatis中操作日期实例分析

    - 尽量避免在SQL中使用复杂的日期运算,而是将计算逻辑放在Java代码中,提高代码可读性和可维护性。 - 使用Joda-Time或Java 8的`java.time`包来处理日期,以获得更好的API和更精确的日期处理能力。 - 遵循数据库...

    java所有可能的日期操作封装

    此外,`add()`方法可以进行日期加减操作,`getTime()`返回`Date`对象。 3. **`java.text.SimpleDateFormat`**: 这是日期/时间格式化类,用于将日期对象转换为字符串,或将字符串解析为日期对象。例如,`new ...

    java版日期计算器

    总之,"Java版日期计算器"是一个实现日期运算的工具,利用Java提供的日期API,可以方便地进行日期加减、计算日期差等操作。随着Java版本的更新,开发者应该优先考虑使用`java.time`包,因为它提供了更加简洁和强大的...

    java日期计算

    对于初学者而言,如何在现有的日期基础上进行加减运算可能会遇到一定的困难。本文将详细介绍如何利用`java.util.Calendar`类来实现日期的加减操作,并通过一个具体示例来展示其实现过程。 #### 二、Calendar类概述 ...

    将c#的DateTime类转成java

    2. **日期运算**:C#的日期运算可以直接通过加减操作符完成,Java中需要使用`plusDays`, `minusMonths`等方法。 3. **字符串转换**:C#使用`ToString`方法,Java可以使用`DateTimeFormatter`进行格式化输出。 4. **...

    Java_Date_日期时间整理

    可以使用 `java.util.Calendar` 类的 `add()` 方法来进行日期的加减运算。 ```java <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> (); SimpleDateFormat formatter = new SimpleDateFormat("E ...

    最全的java时间(日期)工具类

    例如,你可以使用`LocalDateTime.now()`获取当前日期和时间,或者通过`plusDays()`、`minusHours()`等方法进行日期时间的加减运算。`DateTimeFormatter`类用于格式化和解析`java.time`对象,比`SimpleDateFormat`更...

    Java日期时间常见面试题及答案

    9. **日期时间的加减运算**:使用`Calendar`的`add()`或`LocalDateTime`的`plus()`、`minus()`方法进行加减运算。 10. **时间戳转换**:`Date`的`getTime()`方法返回毫秒级时间戳,而`Date`构造函数或`Instant....

    java 日期计算

    下面我们将深入探讨相关的Java日期处理知识。 Java中的日期和时间API主要有两个版本:一个是早期的`java.util.Date`和`java.util.Calendar`类,另一个是Java 8引入的`java.time`包,包含`LocalDate`, `LocalTime`, ...

    java版计算器实现了加减乘除等基本功能及三角函数、进制转换、时间显示等功能。

    例如,我们可以为`Calculator`类定义`add()`, `subtract()`, `multiply()`, 和 `divide()`方法,模拟加减乘除操作。 3. **控制流**:在计算器程序中,控制流(如if-else语句,switch-case,循环)用于决定何时执行...

    Java日期转换

    这篇博客"Java日期转换"探讨了如何在Java中有效地进行日期的转换和操作。以下是对这个主题的详细阐述。 1. **基础概念** - **日期类**:在Java中,`java.util.Date`是最基本的日期类,它表示特定的瞬间,精确到...

Global site tag (gtag.js) - Google Analytics