java時間相加
㈠ 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毫秒
㈡ java里日期如何相加減如何計算兩個時間的差值
date1.getTime()-date2.getTime()
㈢ java中怎麼把兩個為Date類型的數據相加哦
public static void main(String[] args){
String date="12:30:30";
Calendar cal=Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 12);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 30);
System.out.println(cal.getTime());
/**
* 時間相加 00:00:30
*/
int hourAdd=0;//時
int minuteAdd=0;//分
int secondAdd=30;//秒
cal.add(Calendar.HOUR_OF_DAY, hourAdd);//加時
cal.add(Calendar.MINUTE, minuteAdd);//加分
cal.add(Calendar.SECOND, secondAdd);//加秒
System.out.println(cal.getTime());
}
㈣ java 中 日期如何相加減
這個東西很簡單。
現在是2004-03-26 13:31:40
過去是:2004-01-02 11:30:24
要獲得兩個日期差,差的形式為:XX天XX小時XX分XX秒
方法一:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try
{
Date d1 = df.parse("2004-03-26 13:31:40");
Date d2 = df.parse("2004-01-02 11:30:24");
long diff = d1.getTime() - d2.getTime();
long days = diff / (1000 * 60 * 60 * 24);
}
catch (Exception e)
{
}
方法二:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now = df.parse("2004-03-26 13:31:40");
java.util.Date date=df.parse("2004-01-02 11:30:24");
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小時"+min+"分"+s+"秒");
方法三:
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date begin=dfs.parse("2004-01-02 11:30:24");
java.util.Date end = dfs.parse("2004-03-26 13:31:40");
long between=(end.getTime()-begin.getTime())/1000;//除以1000是為了轉換成秒
long day1=between/(24*3600);
long hour1=between%(24*3600)/3600;
long minute1=between%3600/60;
long second1=between%60/60;
System.out.println(""+day1+"天"+hour1+"小時"+minute1+"分"+second1+"秒");
㈤ java 日期型加5分鍾
應該這樣寫
Calendar nowTime = Calendar.getInstance();
Date nowDate = (Date) nowTime.getTime();
Calendar afterTime = Calendar.getInstance();
afterTime.add(Calendar.MONTH, 5);
Date afterDate = (Date) afterTime.getTime();
我想說得是 java已經不推薦使用date類了,所以盡量用Calendar 來實現
㈥ java 兩個時間段計算
兩個時間段四個時間點,相當於時間軸上的兩條線段(b代表起點,e代表端點,b<=e)和4個端點。
可分3種情況:
1.不相交。(b1-----e1)【b2-----e2】(b1-----e1)。if(e1<b2||b1>e2)此時,重合天數為零。
2.相交。
情況一:(b1---【b2---e1)----e2】 if(b1<b2&&e1<e2&&e1>b2)
情況二:【b2---(b1---e2】----e1) if(b1>b2&&b1<e2&&e2<e1)
3.包含:計算較短的時間段日期長度。
(b1---【b2-----e2】--e1) if(b1<b2&&e1>e2)
【b2---(b1-----e1)--e2】 if(b1>b2&&e1<e2)
實現代碼如下:
[java] view plain
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* @author skysnow
*
*/
public class myDateUtil {
/**
*這里共有2個時間段(b1-----e1)【b2-----e2】,4個時間點;
*相當於兩條線段(b代表起點,e代表端點,b<=e),4個端點。
*可分3種情況:
*1.不相交。(b1-----e1)【b2-----e2】(b1-----e1)。if(e1<b2||b1>e2)此時,重合天數為零。
*2.相交。
*情況一:(b1---【b2---e1)----e2】 if(b1<b2&&e1<e2&&e1>b2)
*情況二:【b2---(b1---e2】----e1) if(b1>b2&&b1<e2&&e2<e1)
*3.包含:計算較短的時間段日期長度。
*(b1---【b2-----e2】--e1) if(b1<b2&&e1>e2)
*【b2---(b1-----e1)--e2】 if(b1>b2&&e1<e2)
* @param begindate1 開始日期
* @param enddate1 結束日期
* @param begindate2開始日期
* @param enddate2 結束日期
* @return
*/
public static String getDayCoincidence(Date begindate1,Date enddate1,Date begindate2,Date enddate2){
long b1=begindate1.getTime();
long e1=enddate1.getTime();
long b2=begindate2.getTime();
long e2=enddate2.getTime();
assert(b1<e1&&b2<e2);
String coincidenceday;
if(b1<=b2&&e1>=e2){//(b1---【b2-----e2】--e1)
System.out.println("1包含2");
coincidenceday=getDayDifference(enddate2,begindate2);
}else if(b1>=b2&&e1<=e2){//【b2---(b1-----e1)--e2】
System.out.println("2包含1");
coincidenceday=getDayDifference(enddate1,begindate1);
}else if(b1>=b2&&b1<=e2&&e2<=e1){//【b2---(b1---e2】----e1)
System.out.println("相交");
coincidenceday=getDayDifference(enddate2,begindate1);
}else if(b1<=b2&&e1<=e2&&e1>=b2){//(b1---【b2---e1)----e2】
System.out.println("相交");
coincidenceday=getDayDifference(enddate1,begindate2);
}else if(e1<=b2||b1>=e2){
coincidenceday="0";
}else{
coincidenceday="";
System.out.println("意料外的日期組合,無法計算重合天數!");
}
System.out.println("重合天數為["+coincidenceday+"]天。");
return coincidenceday;
}
/**
* 計算兩個日期的相差天數(d1-d2)
* @param d1
* @param d2
* @return
*/
public static String getDayDifference(Date d1,Date d2){
StringBuffer ds = new StringBuffer();
try{
long num = (d1.getTime()-d2.getTime())/1000;
long days = num/(3600*24);
if(days>=0)ds.append(days);
}catch(Exception e){
ds=new StringBuffer("");
e.printStackTrace();
}
return ds.toString();
}
public static Date stringToDate(String strDate) {
if (strDate==null){return null;}
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
public static String getThisMonth()
{
// 本月的第一天
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.DATE, 1);
SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd");
String fd = simpleFormate.format(calendar.getTime());
// 本月的最後一天
calendar.set( Calendar.DATE, 1 );
calendar.roll(Calendar.DATE, - 1 );
String ld = simpleFormate.format(calendar.getTime());
return fd+","+ld;
}
public static void main(String[] args) {
String[] thisMonth=getThisMonth().split(",");
Date begindate1 = stringToDate(thisMonth[0]+" 00:05:00");
Date enddate1 = stringToDate(thisMonth[0]+" 24:05:00");;
Date begindate2 = stringToDate(thisMonth[0]+" 00:05:00");
Date enddate2 = stringToDate(thisMonth[1]+" 00:00:00");
System.out.println(getDayCoincidence(begindate1, enddate1, begindate2, enddate2));
}
}