2011-05-09 77 views
0

我需要一种方法,它可以给我任意随机数的小时数和分钟数。例如,如果随机数是500,我希望将信息分为5小时和0分钟。另一个示例2359是23小时59分钟。随机数是由用户输入的,我只关心小时和分钟(而不是秒)。我甚至不必担心分钟的四舍五入。所以我写了这个方法,我没有效率。任何人都可以提出一个更好的方法,或者这足够好吗?从数字计算日期

private void calculateDateTime(int someNumber){ 

    if(someNumber<=0){ 
     return; 
    } 

    String number = Integer.toString(someNumber); 
    String hrs =""; 
    String mins ="00"; 
    if(number.length()>4){ 
     hrs =number.substring(0, 2); 
     mins = number.substring(2,4); 
    } 
    else{ 
     float f =((float)someNumber)/100; 
     String s = Float.toString(f); 
     String [] splitArray = s.split("\\."); 
     if(splitArray.length>1) { 
     hrs = splitArray[0]; 
     mins = splitArray[1]; 
     } 
    } 
int hr = Integer.valueOf(hrs); 
int min = Integer.valueOf(mins); 
if(hr>=24||min>=60){ 
    return; 
} 

这就是我如何分别得到小时和分钟。如果你有一个,建议我一个更好的方法。

由于

回答

1

垫输入字符串用零直至长度为4,然后洒在中间的字符串?

1

可能:

int hours = someNumber/100; 
int minutes = someNumber % 100; 

if(hours >= 24 || minutes >= 60) { 
    //Do whatever 
} 
+0

如果随机数大于四位数? – Barry 2011-05-09 21:47:22

+0

超过4位数字意味着超过24小时:10023/100 = 100小时 – 2011-05-09 21:52:57

+0

如果10023应该是一个有效的输入(0小时23分钟),只需在开始时添加以下内容:someNumber = someNumber%10000.这将离开4位或更少的数字。 – 2011-05-09 22:22:20

0

如果你想你的价值观是重复的,我会用在价值传递作为种子到随机发生器。

Random r = new Random(someNumber); 
int hr = r.nextInt(24); 
int min = r.nextInt(60);