本文目录一览:
- 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;
}
}
看代码