做面试题到最后一道,发现题目是5分钟刷新一次当前时间。格式是hh:ss,使用java程序实现
第一感觉是使用while循环解决
Date d=new Date();
然后就卡在获取分钟和秒钟这里了。我第一反应就是getM分钟和get秒钟的两个方法。然后我想到的是日期类Calendar,忘了两个方法的名字是什么?忘了对应的字段是什么?因为手写。
然后简单想了一下,就交卷了。(还剩下了较多时间)
然后交完卷子忽然想起可以使用Date.getMinutes()和Date.getSeconds()两个方法获取。虽然这两个方法已经过时了。
想起可以使用SimpleDateFormat将当前日期解析成yyyy-MM-dd HH:mm:ss格式然后使用字符串的截取获取分钟和秒钟。
最后查JavaSE的api找到Calendar的相关方法:
int |
getSeconds() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。 |
int |
getSeconds() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。 |
到后面给出的答案是:可以使用js等完成也可以,不必局限。。。。
反省:
能用最正确的方法完成使用最正确的方法完成,
忘了可以使用其他方法曲线达到效果也要去做
还是不会有印象不是很确定的方法也随便用,毕竟笔试。
再过来就使用其他语言达到这个效果。
充分给自己时间检查,不急着交卷。大胆,创新。
你妹的,在myeclipes里面使用galendar感觉有问题,出来的实例好像一直是同一个:
for(;;){ Calendar ca=Calendar.getInstance(); System.out.println(ca.MINUTE+" : "+ca.SECOND); try { Thread.sleep(1000*1); } catch (InterruptedException e) { e.printStackTrace(); } }
最正确的做法:
原来可以直接使用SimpleDateFormat进行时间格式的限制,也就是SimpleDateFornat sdf=new SimpleDateFormat("mm:ss");
SimpleDateFormat sdf=new SimpleDateFormat("mm:ss"); for(;;){ String str=sdf.format(new Date()); System.out.println(str); try { Thread.sleep(5*60*1000); } catch (InterruptedException e) { e.printStackTrace(); } }
如果使用js实现的话,使用setInterval(fun,1000*5*60);
function fun(){
var d=new Date();
document.write(d.getMinutes()+" : "+d.getSeconds() );
}