Javascript if/else无法正常工作[时间格式化AM/PM]

Javascript if/else无法正常工作[时间格式化AM/PM],javascript,jquery,Javascript,Jquery,我试图让一个div显示当前时间,但它总是在军事时间显示,所以我使用if/else语句来帮助,但它似乎不起作用 Javascript var time = new Date(Date.now()); var timeHour = time.getHours(); var timeHourFix = timeHour; var timeMinute = time.getMinutes(); var formatted = timeHourFix + ":" + timeMinute; if(tim

我试图让一个div显示当前时间,但它总是在军事时间显示,所以我使用if/else语句来帮助,但它似乎不起作用

Javascript

var time = new Date(Date.now());
var timeHour = time.getHours();
var timeHourFix = timeHour;
var timeMinute = time.getMinutes();
var formatted = timeHourFix + ":" + timeMinute;

if(time.getHours() > 12) {
    timeHourFix = time.getHours() - 12 + "PM";
}else {
    timeHourFix = time.getHours() + "AM";
};

$( document ).ready(function() {
    $('#hourmin').text(formatted)
});

它应该像
5:35 PM
那样显示时间,但它仍然显示
17:35
,这是因为您在实际修改
timeHourFix
之前声明变量
已格式化。请尝试下面的代码

var time=新日期(Date.now());
var hour=time.getHours();
变量t_小时=小时>12?(小时-12):((小时==0)?小时+12:小时);
var formatted=t_hour+”:“+time.getMinutes()+(小时>晚上11点):“AM”);
$(文档).ready(函数(){
$('#hourmin')。文本(格式化)
});


因为您在将正确的值设置为timeHourFix之前设置了格式化。将格式化的赋值移动到else块下方

在您的情况下,问题是您在将变量
timeHourFix
附加到字符串后修改变量,字符串和
timeHourFix
变量之间没有实时链接,因此在字符串连接后对变量所做的任何更改都不会反映在原始值中

此外,还有许多其他问题,如
AM/PM
应位于字符串末尾,因此也必须更改。此外,
timeHourFix
还有其他问题,比如如何处理
0030
值,它应该显示为
12:30 AM
而不是
00:30 AM

var time=新日期(Date.now());
var timeHour=time.getHours();
//设定时间段
var timeHourFix=timeHour>12?timeHour-12:timeHour==0?12:timeHour;
var timeMinute=time.getMinutes();
var formatted=timeHourFix+“:”+timeMinute;
//在字符串末尾设置AM/PM
格式化+=时间小时>=12?“PM’:‘AM’;
$(文档).ready(函数(){
$('#hourmin')。文本(格式化)
});

时间未格式化,因为变量
格式化
是在设置
timeHourFix
timeHour
之前设置的。我认为直接在if-else语句中设置
格式化
最简单:

var time = new Date(Date.now());
var timeHour = time.getHours();
var timeMinute = time.getMinutes();
var formatted;

if(time.getHours() > 12) {
    formatted = time.getHours() - 12 + ":" + timeMinute + " PM";
} else {
    formatted = time.getHours() + ":" + timeMinute + " AM";
};

$( document ).ready(function() {
    $('#hourmin').text(formatted)
});

这是完美的工作完整的代码

var time=新日期(Date.now());
var timeHour=time.getHours();
var timeHourFix=时间小时;
var timeMinute=time.getMinutes();
var formatted=timeHourFix+“:”+timeMinute;
if(time.getHours()>12){
time=time.getHours()-12+“:”+timeMinute+“PM”;
}
否则{
time=time.getHours()+“:”+timeMinute+“AM”;
};
$(文档).ready(函数(){
$('#hourmin')。文本(时间)
});

时间显示


如果您想简化代码,您随时可以这样做

var time = new Date(Date.now());
var timeHour = time.getHours();
var timeHourFix = timeHour;
var timeMinute = time.getMinutes();

$(document).ready(function() {
    var timeofday = "";    
    if(timeHour > 12) {
            timeHourFix = timeHour - 12;
            timeofday = "PM";
    }else {
        timeHourFix = timeHour;
        timeofday = "AM";
    };

    var formatted = timeHourFix + ":" + timeMinute + " " + timeofday;

   $('#hourmin').text(formatted)
});

解释一下他做错了什么以及你的建议会很有帮助。@j08691当我回答时,有太多其他人给出了答案,所以想删除它。。。但是看起来他们中没有一个仍然没有处理
0030
问题!!!即使是现在看起来与第二个投票最多的答案(编辑后)相同的已接受答案,这个简单的更改也会导致AM/PM出现在输出中“:”之前…@TLS--当然,但这不是问题是的。OP说“它应该显示像下午5点35分那样的时间,但它仍然显示17点35分。谢谢你,是的,我刚刚注意到它会显示下午5点35分,我会自己解决这个问题,但这是有效的。”。感谢您的推荐和更新。现在试试。+1用于捕捉AM/PM需要移动到末尾的信息,并在其中添加空间以提高可读性!接受的答案不包括
0030
问题…-看到我的答案了吗below@ArunPJohny
0030
问题到底是什么,它显示的是0小时而不是12小时吗?是的
0030
小时应该显示时间为
12:30 AM
而不是
0:30 AM
@ArunPJohny哦,你添加了关于编辑的信息,我会测试它(遗憾的是,现在已经很晚了,我马上就要睡觉了,所以我明天会去看看)