祝大家新年快乐,
我正在使用此函数来获取今天和给出日期之间的剩余时间(小时:分钟),它工作正常......
function PrayerTimeLeft(prayerTime){
var today = new Date();
var prayerTimeDate = new Date();
prayerTimeDate.setHours(prayerTime.substring(0,2));
prayerTimeDate.setMinutes(prayerTime.substring(3,5));
var diffMs = (prayerTimeDate - today);
var diffHrs = Math.round((diffMs % 86400000) / 3600000);
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000);
return {
getDiffMin:function(){
return diffMins;
},
getDiffHrs:function(){
return diffHrs;
}
};
}
我可以这样使用它:
var test = new PrayerTimeLeft("14:00"); // and today was 12:00 in 24 format
console.log(test.getDiffHrs()); //It will show 2 hours
我在这里试图了解即将到来的祈祷时间还剩多少,有五个祈祷:第一个:5:00 第二:11:42 第三次:14:26 第四:16:50 第五:18:07
我的问题是,如果当前时间(假设是 23:00)在第五个和第一个时间之间,这里我们讨论的是明天的时间(5:00 和 18:07)之间
我无法意识到这种相反的事情?
最佳答案
我有3条建议:
- 仅返回对函数的引用。假设有 4 个以上的方法,您的模式就会变得困惑。
- 如果您确定会得到字符串 HH:MM,为什么不简单地拆分它呢?
- 避免像您一样设置辅助变量。如果您已经有了主要值(
today
和prayerTime
),并且您能够导出各种新的度量值(例如剩余的小时、分钟、秒等),请将您的对象保留为无状态尽你所能。
其他一些模式建议在 return 语句之后声明函数(而不是声明 var
和匿名函数
)
function PrayerTimeLeft(prayerTime) {
var today = new Date();
var prayerTimeDate = new Date();
var setPrayerTime = function() {
var prayerHours = prayerTime.split(':')[0];
var prayerMin = prayerTime.split(':')[1];
if (today.getHours() >= prayerHours) {
prayerTimeDate.setDate(today.getDate() + 1);
}
prayerTimeDate.setHours(prayerHours);
prayerTimeDate.setMinutes(prayerMin);
};
var getDiffMin = function() {
return (prayerTimeDate - today) / 1000 / 60;
};
var getDiffHrs = function() {
return Math.floor((prayerTimeDate - today) / 1000 / 60 / 60);
};
setPrayerTime();
return {
getDiffMin: getDiffMin,
getDiffHrs: getDiffHrs
};
}
和测试:
var test = new PrayerTimeLeft("00:00"); // and today was 12:00 in 24 format
console.log(test.getDiffMin()); //It will show total minutes left
console.log(test.getDiffHrs()); //It will show total hours left (without minutes) 14:59 left will be shown as 14 hours left (15 hours would be more inaccurate).
编辑:如果您想返回 HH:MM,这里有一个具有额外功能的片段。
function PrayerTimeLeft(prayerTime) {
var today = new Date();
var prayerTimeDate = new Date();
var setPrayerTime = function() {
var prayerHours = prayerTime.split(':')[0];
var prayerMin = prayerTime.split(':')[1];
if (today.getHours() >= prayerHours) {
prayerTimeDate.setDate(today.getDate() + 1);
}
prayerTimeDate.setHours(prayerHours);
prayerTimeDate.setMinutes(prayerMin);
};
var getDiffMin = function() {
return (prayerTimeDate - today) / 1000 / 60;
};
var getDiffHrs = function() {
return Math.floor((prayerTimeDate - today) / 1000 / 60 / 60);
};
var getDiffString = function() {
return Math.floor(getDiffMin() / 60) + ':' + getDiffMin() % 60;
}
setPrayerTime();
return {
getDiffMin: getDiffMin,
getDiffHrs: getDiffHrs,
getDiffString: getDiffString
};
}
关于javascript - 在 javascript 中以 24 格式给出明天的时间,获取现在剩余的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27642277/