系统时间减开始时间大于限制时间的1/3,这个判断在java里怎么写?

系统时间paper.getSys_date()
开始时间paper.getStart_date()
限制时间paper.getTime_limited()
精确到分钟就行

如果是Date型的:
long sys_date = paper.getSys_date().getTime();
long start_date = paper.getStart_date().getTime();
long limit = Long.valueOf(paper.getTime_limited())*1000; // 设限制时间的单位是“秒”

double division = (sys_date - start_date) * 1.0 / limit;
if (division >= 0.34)
{
System.out.println("超时:1/3");
}追问

不要秒,只要分钟

追答

所有的long变量 / 1000*60 就可以了。

追问

long sys_date = paper.getSys_date().getTime()*1000*60;
long start_date = paper.getStart_date().getTime()*1000*60;
long limit = Long.valueOf(paper.getTime_limited())*1000*60;
这样?
我getTime()这个方法没有,.不出来

追答

首先paper.getSys_date()是什么类型的?String?
要先将其转化成java.util.Date类型。
getTime()是取的毫秒,所以要:...getTime() / (1000*60),这样才是秒的数值。

追问

start_date在DTO里是String类型的,paper.getStart_date()是页面上传的值,这样怎么转?

追答

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh24:mi:ss");
String strDate = paper.getStart_date();
Date myDate = sdf.parse(strDate);
这里的日期字符串表示的格式需要是:“2012-02-23 14:55:00”。如果不是,需要修改SimpleDateFormat构造函数中的格式化字符串。

追问

long limit = Long.valueOf(paper.getTime_limited())*1000; // paper.getTime_limited()这个限制时间是以分钟为单位的,比如120分钟,那*1000是不是不能这么写了?
double division = (sys_date - start_date) * 1.0 / limit; //这里的*1.0是什么意思?

追答

long limit = (这里是要把paper.getTime_limited()转化成毫秒,如果paper.getTime_limited()是秒,就*1000;如果paper.getTime_limited()是分钟,就*60*1000)。按你的意思只取分钟,那么连这*60*1000也不必了,直接long limit = Long.valueOf(paper.getTime_limited())。其实int limit = Integer.valueOf(paper.getTime_limited())就够了,好像没那么长的间隔设置吧。
double division = (sys_date - start_date) * 1.0 / limit;由于division是double类型的,而sys_date、start_date、limit都是整数型(Integer、long)的,所以需要至少把1方转化成浮点型(double、float)的。这里*1.0,由于“1.0”是浮点型的,所以乘积就变成浮点型,后面的除法结果也就是浮点型的了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-23
/**
* 开始时间-限制时间大于限制时间的1/3
* @param beginTime 开始时间
* @param limitTime 限制时间
* @throws ParseException
*/
static void test2(String beginTime, String limitTime) throws ParseException{
Date date = new Date();
long a = date.getTime(); //系统时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long d1 = sdf.parse(beginTime).getTime(); //开始时间
long d2 = sdf.parse(beginTime).getTime(); //限制时间
int m = (int) ((a-d1)/(1000*60)); //1000毫秒*60秒 = 分钟
System.out.println("开始时间-限制时间="+m+"分钟");
int m2 = (int)(d2/(1000*60)); //限制时间 转化成分钟
System.out.println("限制时间="+m2);
if(m > m2/3){
System.out.println("开始时间-限制时间大于限制时间的1/3");
}
}
相似回答
大家正在搜