永发信息网

用java编程逐行输出 钟表一天内三指针重合时间,精确的秒

答案:2  悬赏:70  手机版
解决时间 2021-11-29 02:13
用java编程逐行输出 钟表一天内三指针重合时间,精确的秒
最佳答案
//构造一个GregorianCalendar,并且将年月日时分秒都定为0,得到一个基础时间值(精确到毫秒)
long base=new GregorianCalendar(0,0,0,0,0,0).getTime().getTime();
DateFormat df=new SimpleDateFormat("HH:mm:ss"); //构造一个时间格式对象(仅仅取时分秒)
//一天有60*60*12*2秒,从0秒开始,逐秒增加,判断该时刻是否发生针的重叠。
//把时钟盘面分成60格,判断时针、分针、秒针是否在同一格子上
for(int t=0;t<60*60*12*2;t++){
//计算时针所在格子,对60*60*12求余是将当前总秒数映射到半天的范围中(时针在后半天与前半天的位置变动一样),然后除以60得到分钟数,然而对于分针来说一分钟走一格子,对于时针来说则是走十二分之一格子(时针60分钟走5个格子),于是又再除以12得到时针所在的格子

int locHourHand=Math.round((t%(60*60*12))/(60*12));
// 对60*60求余得到分、秒段的数据,除以60得到其中分钟数,也对应于分针格子了。
int locMinuteHand=Math.round((t%(60*60))/60);
// 对60求余得到秒段数据,即秒针所在格子
int locSecondHand=t%60;
//若三者相同则表示重叠
if(locHourHand==locMinuteHand&&locHourHand==locSecondHand){
//此时将其恢复为一个正常的Date对象(Date对象精确到毫秒)
Date date=new Date(base+t*1000); //加上之前的基础时间值,再加上当天的时间
System.out.println(df.format(date)); //进行格式化输出追问Date date=new Date(base+t*1000); //加上之前的基础时间值,再加上当天的时间
您好,我想问一下,这里为什么要加上基础时间值?追答因为你要打印的是一天内的时间值,而t是从当天0点0分0秒开始计算的增量秒数,因此必须加上一个处于0点时刻的时间值来得到Date对象。如果加上的时刻不是0点时刻,那么加上增量之后很可能跨到第二天~~~
全部回答
long base=new GregorianCalendar(0,0,0,0,0,0).getTime().getTime(); 定义一个0毫秒的基数,为了后面使用format做准备。
DateFormat df=new SimpleDateFormat("HH:mm:ss"); 设置格式化的样式
for循环是安装一天时间长度的总共有60*60*12*2秒(这个因为要精确到秒),在每个秒长度时间上,分别获得时针、分钟和秒针所在表盘的位置(表盘整个圆是60秒)。
然会判断三个针位置是否是一样的,如果一样就输入该时间。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
佳美汽车用品批发中心地址在哪,我要去那里办
电解水能饮用吗?
大汗腺取出来是黄色的吗
闺蜜网名4个人霸气
配戴过绍兴的欧陆眼镜的人请进
孕妇梦见大鱼生下许多小鱼在清水游,孕妇在给
魔导英雄传是单机还是网游?
如何查看魅蓝E3型号
杜牧写过什么诗
新手日经贴,远哭3 这里面3个有什么区别
宁夏全款买房可以每年提取公积金吗
人类在过去100年里所创造的财富,为什么比人
奥迪q5技术型跟舒适型买哪个好
为什么我的精液很快就会射出来
燃料的热值与热机的效率有什么联系,为什么物
推荐资讯
当这块金属板被悬空放置时,它的重心是哪一点
标致408A屏显示如何调整
泰州市第一外国语学校怎么收费的一学期多少钱
各商业银行要取消哪几种费用?
井中月网吧地址在什么地方,我要处理点事!
态度用严什么来形容只能用严厉,严肃,严峻来
ps怎样做仿古印章效果
下列说法错误的是A.聚氯乙烯不宜用来包装食品
晴天小狗2双方狗狗纯种但又不同种能生混特效
有人知道眼睛下面长这些东西是什么吗?
猜谜语动物大全及答案三点如水把汗酒
酒店损坏东西
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?