Javascript 试图找出当前时间和日期代码的逻辑
我试图弄清楚if语句在这段代码中是如何工作的。这对我来说毫无意义。请看下面的评论。对于不同的时间段,为什么小时=12?我想我完全迷路了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[
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 ';
}