javascript - 在 javascript 中以 24 格式给出明天的时间,获取现在剩余的时间

标签 javascript compare

祝大家新年快乐,

我正在使用此函数来获取今天和给出日期之间的剩余时间(小时:分钟),它工作正常......

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条建议:

  1. 仅返回对函数的引用。假设有 4 个以上的方法,您的模式就会变得困惑。
  2. 如果您确定会得到字符串 HH:MM,为什么不简单地拆分它呢?
  3. 避免像您一样设置辅助变量。如果您已经有了主要值(todayprayerTime),并且您能够导出各种新的度量值(例如剩余的小时、分钟、秒等),请将您的对象保留为无状态尽你所能。

其他一些模式建议在 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/

相关文章:

java - Java中的字符串比较很奇怪

c# - mysql 和 c# - 将日期与今天进行比较(仅当天)

javascript - Angular Controller (按模块)空白页

javascript - 如何将对象分配给本地存储而不是分配给每个项目?

javascript - 在一个事件中提交两个表单

javascript - 代码并不总是在 PHP 联系表单页面中运行

string - 如何在 Robot Framework 中搜索空字符串/比较两个字符串

javascript - Microsoft Edge PDF 查看器扩展位置

objective-c - 如何查看字符串是否包含子字符串(objective-c)

testing - 比较大量 PDF 文件的工具?