我正在尝试构建一个简单的时间解析器,用于说明事情何时发布。如果它在一小时前减少了 - 它说的是#1;少于一小时前"所以 - 你明白了。
为此,我使用了JavaScript!这是我的开始:
var TimeMachines = {
adjustTime: function(el) {
var current = new Date(),
day = current.getDate(),
month = current.getMonth() + 1,
year = current.getFullYear(),
hour = current.getHours(),
minutes = current.getMinutes();
var sameDay,
sameHour,
sameMinute;
var hourAgo,
fourHoursAgo,
sixHourAgo;
if(day < 10) {
day = '0'+day;
}
if(month < 10) {
month = '0'+month;
}
if(hour < 10) {
hour = '0'+hour;
}
if(minutes < 10) {
minutes = '0'+minutes;
}
el.each(function() {
var fullDate = $(this).text(),
separatedDate = fullDate.split(' '),
separatedDay = separatedDate[0],
separatedHour = separatedDate[1],
onlyHour = separatedHour.split(':');
// check if day is the same
if((day+'.'+month+'.'+year) === separatedDay) {
sameDay = true;
}
if(hour == onlyHour[0]) {
sameHour = true;
}
// if same hour
if(sameHour && sameDay) {
el.text('mniej niż godzinę temu')
}
if(sameHour && (parseInt(minutes) - parseInt(onlyHour[1]) <= 30)) {
el.text('przed chwilą')
}
// if same day
if(sameDay) {
el.text('dzisiaj');
}
});
};
}
$(document).ready(function() {
TimeMachines.adjustTime($('.datetime'));
});
HTML:
<time class="datetime">10.12.2014 13:00</time>
问题在于比较。它始终显示dzisiaj
,因此看起来它会在if(sameDay){}
之后停止。
如何正确定位我的例外情况?
答案 0 :(得分:2)
在功能结束时,你有一个if语句,将文本设置为&#39; dzisiaj&#39;如果sameDay
为真,则无论其他条件是否为真,都会发生这种情况。
你可以使用else语句raina77ow建议:
// if same hour
if(sameHour && sameDay) {
el.text('mniej niż godzinę temu')
}
else if(sameHour && (parseInt(minutes) - parseInt(onlyHour[1]) <= 30)) {
el.text('przed chwilą')
}
// if same day
else if(sameDay) {
el.text('dzisiaj');
}
或者你可以使用早期的回复声明:
// if same hour
if(sameHour && sameDay) {
el.text('mniej niż godzinę temu')
return;
}
if(sameHour && (parseInt(minutes) - parseInt(onlyHour[1]) <= 30)) {
el.text('przed chwilą')
return;
}
// if same day
if(sameDay) {
el.text('dzisiaj');
return;
}