本文目錄一覽:
- 1、java按照時間查詢,獲取近1月時間信息。時間如何加減?簡單易懂,謝謝了。
- 2、在java里怎麼取離當前日期最近的一個星期天??
- 3、java中一個List里放有若干個Date類型對象,如何最快找出離當前系統日期最近的那個,求教。
java按照時間查詢,獲取近1月時間信息。時間如何加減?簡單易懂,謝謝了。
1.用java.util.Calender來實現
Calendar calendar=Calendar.getInstance();
calendar.setTime(new Date());
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天的日期
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+1);//讓日期加1
System.out.println(calendar.get(Calendar.DATE));//加1之後的日期Top
===============================================================================
2.用java.text.SimpleDateFormat和java.util.Date來實現
Date d=new Date();
SimpleDateFormat df=new SimpleDateFormat(“yyyy-MM-dd”);
System.out.println(“今天的日期:”+df.format(d));
System.out.println(“兩天前的日期:” + df.format(new Date(d.getTime() – 2 * 24 * 60 * 60 * 1000)));
System.out.println(“三天後的日期:” + df.format(new Date(d.getTime() + 3 * 24 * 60 * 60 * 1000)));
在java里怎麼取離當前日期最近的一個星期天??
date為當前日期
day為當前星期幾
0、1、2、3、4、5、6分別表示星期日123456
你只要判斷day
當day=4則 date+7-day即為未來最近星期天的日期
當day4,則date-day即為過去最近的星期天的日期
java中一個List里放有若干個Date類型對象,如何最快找出離當前系統日期最近的那個,求教。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
ListDate list=new ArrayListDate();
Random ra=new Random();
for(int i=0;i100;i++){
long n=ra.nextLong();
if(n0){
n=-n;
}
n%=1600000000000L;
list.add(new Date(n));
}
for(Date t:list){
System.out.println(t);
}
System.out.println(“”+find1(list,new Date()));
System.out.println(“”+find2(list,new Date()));
}
/**
* 搜索離得最近的日期, 先排序再搜索, 修改下適合進行大量的快速搜索
* @param list
* @param d
* @return
*/
private static Date find1(ListDate list,Date d){
if(list==null || list.size()=0){
return null;
}
if(list.size()==1){
return list.get(0);
}
list=new ArrayListDate(list);
Collections.sort(list);
int left=0;
int right=list.size()-1;
while(left=right){
int mid=(left+right)/2;
int cm=d.compareTo(list.get(mid));
if(cm0){
right=mid-1;
}
else if(cm0){
left=mid+1;
}
else{
return list.get(mid);
}
}
if(left=0){
return list.get(0);
}
if(left=list.size()){
return list.get(list.size()-1);
}
long dleft=d.getTime()-list.get(left-1).getTime();
long dright=list.get(left).getTime()-d.getTime();
return dleftdright?list.get(left-1):list.get(left);
}
/**
* 搜索離得最近的日期.適合只進行一次的快速搜索.
* @param list
* @param d
* @return
*/
private static Date find2(ListDate list,Date d){
if(list==null || list.size()=0){
return null;
}
long gap=Long.MAX_VALUE;
Date r=null;
long time=d.getTime();
for(Date t:list){
long tm=Math.abs(time-t.getTime());
if(gaptm){
gap=tm;
r=t;
}
}
return r;
}
}
看代碼
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/310181.html