java 中 日期怎么相加减

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中 日期怎么相加减相关的知识,希望对你有一定的参考价值。

JAVA Calendar类提供了2个方法:add() 和 roll()。

Calendar cal = Calendar.getInstance();
add(f, delta) 将 delta 添加到 f 字段中。这等同于调用 set(f, get(f) + delta),
roll(f, delta) 将 delta 添加到 f 字段中,但不更改更大的字段。这等同于调用 add(f, delta)

如果要计算2个日期之间的差距,可以取得自1970 年 1 月 1 日的 00:00:00.000各自的毫秒数字,然后相减
long millionSecondsForDate1 = date1.getTime();
long millionSecondsForDate2 = date2.getTime();

long julianSeconds = millionSecondsForDate1 - millionSecondsForDate2 ;
然后你可以转化为你想要得时间,注意毫秒和秒之间进位是1000
1秒 = 1000毫秒
参考技术A delphi中日期就是double型,
如果想知道两个日期之间差几天,那么用trunc(date1)-trunc(date2)就行了。
如果想在一个日期上加几天,那么用date1+n就可以了。追问

java 日历类中有那个方法?

参考资料:百度一下

参考技术B 知道两个日期之间差几天,那么用trunc(date1)-trunc(date2)就行了。
如果想在一个日期上加几天,那么用date1+n就可以了。
参考技术C Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1); //加一天
cal.add(Calendar.DATE, -1); //减一天

这是入门方法, 具体的别的用法去网上找相关的文档,Jdk API也可以
参考技术D Date date = new Date(date1.getTime() - date2.getTime())

sql语句怎么来对日期进行相加减

在sql server里可以使用:
where start_date <=
DateAdd(d,1,to_date(\'2005-12-09\',\'yyyy-mm-dd\'))
and completion_date >=
to_date(\'2005-12-09\', \'yyyy-mm-dd\') ;

oracle中没有定义和sql server中一样的DateAdd函数,
oracle可以通过interval \'n\' year/month/day/hour/minute/second/second(p,s)
的方式来增减时间
下面是自己在oracle中写的DateAdd函数
函数调用基本同sql server一样, 不过datepart部分需要以字符串的方式输入, 即
DateAdd(d,1,to_date(\'2005-12-09\',\'yyyy-mm-dd\'))
要改为
DateAdd(\'d\',1,to_date(\'2005-12-09\',\'yyyy-mm-dd\'))

函数定义如下函数中的注释是datepart的新说明, 与sql server中的略有不同)
create or replace function DATEADD( datepart varchar2, num number, indate date ) return date is
Result date;
v_sql varchar2(1000);
v_datepart varchar2(30);
v_ms varchar2(13);
begin
v_datepart := lower(datepart);
/*
Datepart Abbreviations
year yy, y
quarter qq, q
month mm, m
day dd, d
week wk, w
hour hh, h
minute mi, n
second ss, s
millisecond ms
*/
case
when v_datepart in (\'year\',\'yy\',\'y\') then
v_sql := \'select :1 + interval \'\'\'||num||\'\'\' year from dual\';
when v_datepart in (\'quarter\',\'qq\',\'q\') then
v_sql := \'select :1 + (interval \'\'3\'\' month) * \'||num||\' from dual\';
when v_datepart in (\'month\',\'mm\',\'m\') then
v_sql := \'select :1 + interval \'\'\'||num||\'\'\' month from dual\';
when v_datepart in (\'week\',\'wk\',\'w\') then
v_sql := \'select :1 + (interval \'\'7\'\' day) * \'||num||\' from dual\';
when v_datepart in (\'day\',\'dd\',\'d\') then
v_sql := \'select :1 + interval \'\'\'||num||\'\'\' day from dual\';
when v_datepart in (\'hour\',\'hh\') then
v_sql := \'select :1 + interval \'\'\'||num||\'\'\' hour from dual\';
when v_datepart in (\'minute\',\'mi\',\'n\') then
v_sql := \'select :1 + interval \'\'\'||num||\'\'\' minute from dual\';
when v_datepart in (\'second\',\'ss\',\'s\') then
v_sql := \'select :1 + interval \'\'\'||num||\'\'\' second from dual\';
when v_datepart in (\'millisecond\',\'ms\') then
v_ms := to_char(num/1000,\'fm999999990.000\');
v_sql := \'select :1 + interval \'\'\'||v_ms||\'\'\' second(9,3) from dual\';
else
RAISE_APPLICATION_ERROR(-20001, \'\'\'\'||datepart||\'\'\' is not a recognized dateadd option.\' );
end case;

execute immediate v_sql into Result using indate;

return(Result);

EXCEPTION
WHEN OTHERS THEN
RAISE ;

end DATEADD;
参考技术A 相减是计算二个时间的差值,这个应该有函数,好像是 DateDiff ,具体用法比较简单:DateDiff(计算的时间值,计算的开始时间,计算的结束时间) ,其中“计算的时间值 ”包括秒(s)、分(n)、时(h)、日(d)、月(m)、年(yyyy)。
但二个日期或时间相加是什么?好像没有这样的运算吧?也可能是我孤陋寡闻吧。

以上是关于java 中 日期怎么相加减的主要内容,如果未能解决你的问题,请参考以下文章

sql语句怎么来对日期进行相加减

java或Jmeter实现两个日期相加减(2003-06-01-2003-05-01)

mysql触发器使日期相加减?

SQL中怎么实现时间相加。比如 我要实现 从今天的日期加30天为到期日。

javaScript日期相加减例子

mysql里怎么能让插入的数据自动相加减呢?