此时间转换的语法解释

Syntax explaination for this time conversion

本文关键字:语法 解释 转换 时间      更新时间:2023-09-26

我看不懂这行代码。谁能一个字一个字地解释一下第4行是什么意思?

hour = Math.floor(nextArrival / 3600);
min = Math.floor(nextArrival % 3600 / 60);
sec = Math.floor(nextArrival % 3600 % 60);
nextArrivalFinal2 = ((hour > 0 ? hour + ":" + (min < 10 ? "0" : "") : "") + min + ":" + (sec < 10 ? "0" : "") + sec);

我怎么写它,当它是一个新的一天,时间是在00:00:00,它仍然会显示00的小时应该是。目前,第4行代码跳过显示小时数,如果我认为它低于1。因此,如果时间是00:05 AM,它将只显示分和秒,而不是00小时。

这叫做三元运算符

语法:

(expression) ? true part : false part

对于第4行

来说,这是更详细的方法
var nextArrivalFinal2 = ""
if (hours > 0) {
  nextArrivalFinal2 = hour + ":";
  if (min < 10)
    nextArrivalFinal2 += "0"
  else
    nextArrivalFinal2 += ""
} else {
  nextArrivalFinal2 += "";
}
nextArrivalFinal2 += min + ":";
if (sec < 10)
  nextArrivalFinal2 += "0"
else
  nextArrivalFinal2 += "";
nextArrivalFinal2 + sec

这一行使用了条件运算符

condition ? expr1 : expr2

如果只使用ifelse,就会得到这样的结果

if(hour > 0){
    text = hour + ":";  
    if(min < 10){
        text += "0"
    }else{
        text += ""
    }
    text += "";
}
text += min + ":";
if(sec < 10){
    text += "0";
}else{
    text += "";
}
text += sec;

显然有没有用的else,但我仍然告诉他们使用条件运算符的每一项

其他人已经很好地解释了第4行,但是对于你问题的最后一部分,你想要的是一致的格式,如hh:mm:ss ?

nextArrivalFinal2 = (hour < 10 ? "0" : "") + hour + ":" + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;

//示例nextArrival = 3760(这是以秒为单位的实际时间)//hour给你的小时数:1小时= 3600秒

hour = Math.floor(nextArrival / 3600);

//获取分钟:nextArrival % 3600将给你秒删除小时

min = Math.floor(nextArrival % 3600 / 60);

//这将给你秒

sec =数学。地板(nextArrival % 3600 % 60);

//nextArrivalFinal2 = ((hour> 0 ?)小时+ ":" + (min <10 ?"0":"):")+ min +":"+ (sec <10 ?"0": " ") + sec);

你必须知道三元运算符这是一个基本的三元运算符> b吗?A: b;

如果a大于b,则取a,否则取b;

类似地,在这种情况下,如果hour>0,它将输出hour + some other values of minnutes which also have a ternary operator else ",如下面的代码第10行所述。
之后是+,意思是追加到字符串上。然后,它将打印如第12行所示的最小值+一些SEC值,这将再次具有一个三元操作符最后它将在第17行打印sec ((hour > 0 ? hour + ":" + (min < 10 ? "0" : "") : "") + min + ":" + (sec < 10 ? "0" : "") + sec)