Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图找出当前时间和日期代码的逻辑_Javascript - Fatal编程技术网

Javascript 试图找出当前时间和日期代码的逻辑

Javascript 试图找出当前时间和日期代码的逻辑,javascript,Javascript,我试图弄清楚if语句在这段代码中是如何工作的。这对我来说毫无意义。请看下面的评论。对于不同的时间段,为什么小时=12?我想我完全迷路了 var today = new Date(); var day = today.getDay(); var daylist = ["Sunday","Monday","Tuesday","Wednesday ","Thursday","Friday","Saturday"]; console.log("Today is : " + daylist[

我试图弄清楚if语句在这段代码中是如何工作的。这对我来说毫无意义。请看下面的评论。对于不同的时间段,为什么小时=12?我想我完全迷路了

var today = new Date();
var day = today.getDay();
var daylist = ["Sunday","Monday","Tuesday","Wednesday ","Thursday","Friday","Saturday"];
       console.log("Today is : " + daylist[day] + ".");
        var hour = today.getHours();
        var minute = today.getMinutes();
        var second = today.getSeconds();
        var prepand = (hour >= 12)? " PM ":" AM ";
        hour = (hour >= 12)? hour - 12: hour;

if (hour===0 && prepand===' PM ') 
{    
if (minute===0 && second===0)
{  
hour=12;
prepand=' Noon';
}  
else
{  
hour=12;
prepand=' PM';
}  
}

if (hour===0 && prepand===' AM ') 
{    
if (minute===0 && second===0)
{  
hour=12;
prepand=' Midnight';
}  
else
{  
hour=12;
prepand=' AM';
}  
}  


console.log("Current Time : "+hour + prepand + " : " + minute + " : " + second);

你的代码毫无意义:

if (hour===0 && prepand===' PM ')    
{    
if (minute===0 && second===0)
{  
hour=12;  //when it is noon, the hour will be 12, and prepand will be "pm"...but why here it is still 12? 
prepand=' Noon';
}  
else
{  
hour=12;
prepand=' PM';
}  
}


if (hour===0 && prepand===' AM ') 
{    
if (minute===0 && second===0)
{  
hour=12;    //isn't when it is 24 for midnight? why 12 again? 
prepand=' Midnight';
}  
else
{  
hour=12;    //and why it is still 12 for else? 
prepand=' AM';
}  
}  
prepand
早一点就定义为:

if (hour===0 && prepand===' PM ') 
因此,如果
hour>=12,则逻辑上
prepand
已经是
的“PM”
,如果
hour<12,则逻辑上是
的“AM”

如果(
if(hour===0&&prepand=='PM')
将永远不会触发,因为它不能同时触发
hour
0和
prepand
“PM”,因为JS的方法
.getHours()
返回0-23之间的值



另外,让你的生活更轻松,避免像
“AM”
“AM”

这样的欺骗。代码通过格式化日期/时间从(世界上大多数国家使用的,JavaScript使用的)到(美国使用的)来确定是中午还是午夜

以下是代码的简化版本,并附有一些注释:

var prepand = (hour >= 12)? " PM ":" AM ";

基本上,脚本试图显示
Midnight
Noon
仅当时间正好是午夜或正午时,这意味着分和秒都等于0。逻辑过于复杂,可以归结为更具可读性和简洁性的内容,例如:

var today = new Date();
var day = today.getDay();
var daylist = ["Sunday","Monday","Tuesday","Wednesday ","Thursday","Friday","Saturday"];

console.log("Today is : " + daylist[day] + ".");
var hour = today.getHours(); 
var minute = today.getMinutes();
var second = today.getSeconds();
var prepand = (hour >= 12) ? " PM " : " AM ";

// Convert from 24-hour time to 12-hour time
hour = (hour >= 12) ? hour - 12 : hour;

if (hour === 0 && minute === 0 && second === 0) {
  // It is either midnight or noon on a 12 hour clock
  // Both midnight and noon on a 12-hour clock is 12:00:00
  hour = 12;

  if(prepand === ' PM ') {
      // It is 12:00:00 on a 12-hour and a 24-hour clock
      prepand = ' Noon';
  } else { // prepand = AM
      // It is 12:00:00 on a 12-hour clock and 00:00:00 on a 24-hour clock
      prepand = ' Midnight';
  }
}
下面是一段代码片段。请注意,
Midnight
Noon
仅在没有分钟或秒时显示

函数格式日期(日期){
var day=date.getDay(),
daylist=[“周日”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”],
小时=日期。getHours()%12,
分钟=日期。getMinutes(),
秒=日期。getSeconds(),
prepend=hour==date.getHours()?'AM':'PM';
如果(小时==0){
小时=12;
如果(分钟===0和秒===0)
prepend=prepend=='AM'?'Midnight':'Noon';
}
返回daylist[day]+''+hour+':'+('00'+minute).substr(-2)+':'+('00'+second).substr(-2)+前缀
}
///演示的设置
var\u input=document.getElementById('inp'),
_btn=document.getElementById('btn'),
_输出=document.getElementById('out');
_btn.addEventListener('click',function(){
var msg='不是有效日期';
如果(!isNaN(Date.parse(_input.value)))
msg=格式化日期(新日期(_input.value));
_output.innerText=msg;
})

它看起来将返回
11:59:59 PM
12:00:00午夜
12:00:01 AM
。可以将时间设置在支票之外,以更改预付款,是的。
  if (hour === 0) {
    hour = 12;

    if (minute === 0 && second === 0)
      prepend = prepend === ' AM ' ? ' Midnight ' : ' Noon ';
  }