The time machine-时间机器计算差值(二十四小时内)

The time machine-时间机器计算差值(二十四小时内):输入hours、minutes,1代表AM,0代表PM.

//The time machine-时间机器计算差值(二十四小时内)
#include<iostream>

int computeDifference(int startHours, int startMinutes, bool startIsAM,int endHours,   int endMinutes,   bool endIsAM);

int main()
{
    using namespace std;
    int startHours,startMinutes,endHours,endMinutes;
    bool startIsAM,endIsAM;
    int total_minutes;
    
    cout<<"Please inout the start time (startHours,startMinutes,startIsAM(1:AM;0:PM)):\n";
    cin>>startHours>>startMinutes>>startIsAM;
    cout<<"Please inout the end time (endHours,endMinutes,endIsAM(1:AM;0:PM)):\n";
    cin>>endHours>>endMinutes>>endIsAM;
    
    total_minutes = computeDifference(startHours,startMinutes,startIsAM,endHours,endMinutes,endIsAM);
    
    cout<<"The difference value of the two time is "<<total_minutes<<" minutes!"<<endl;
    
    return 0;
}

int computeDifference(int startHours,int startMinutes,bool startIsAM,int endHours,int endMinutes,bool endIsAM)
{
    using namespace std;
    int total_minutes;
    if(true == startIsAM && false == endIsAM)
        {
            if(startMinutes <= endMinutes)
                total_minutes = (endHours - startHours)*60 + (endMinutes - startMinutes);
            else
                total_minutes = (endHours -1 - startHours)*60 + (endMinutes + 60 - startMinutes);
        }
    else if(true == startIsAM && true == endIsAM)
        {
            if(startHours < endHours)
                {
                    if(startMinutes <= endMinutes)
                        total_minutes = (endHours - startHours)*60 + (endMinutes - startMinutes);
                    else
                        total_minutes = (endHours -1 - startHours)*60 + (endMinutes + 60 - startMinutes); 
                }
            else if(startHours > endHours)
                {
                    if(startMinutes >= endMinutes)
                        total_minutes =24*60 - (startHours - endHours)*60 + (startMinutes - endMinutes);
                    else
                        total_minutes =24*60 - (startHours -1 - endHours)*60 + (startMinutes + 60 - endMinutes); 
                }
            else if(startHours == endHours)
                {
                    if(startMinutes <= endMinutes)
                        total_minutes = (endHours - startHours)*60 + (endMinutes - startMinutes);
                    else
                        total_minutes = 24 * 60 - (startMinutes - endMinutes);
                }
        }
    else if(false == startIsAM && false == endIsAM)
        {
            if(startHours < endHours)
                {
                    if(startMinutes <= endMinutes)
                        total_minutes = (endHours - startHours)*60 + (endMinutes - startMinutes);
                    else
                        total_minutes = (endHours -1 - startHours)*60 + (endMinutes + 60 - startMinutes); 
                }
            else if(startHours > endHours)
                {
                    if(startMinutes >= endMinutes)
                        total_minutes =24*60 - (startHours - endHours)*60 - (startMinutes - endMinutes);
                    else
                        total_minutes =24*60 - (startHours -1 - endHours)*60 - (startMinutes + 60 - endMinutes); 
                } 
            else if(startHours == endHours)
                {
                    if(startMinutes <= endMinutes)
                        total_minutes = (endHours - startHours)*60 + (endMinutes - startMinutes);
                    else
                        total_minutes = 24 * 60 - (startMinutes - endMinutes);
                }
        }
    else if(false == startIsAM && true == endIsAM)
        {
            if(startMinutes >= endMinutes)
                total_minutes =24*60 - (startHours - endHours)*60 - (startMinutes - endMinutes);
            else
                total_minutes =24*60 - (startHours -1 - endHours)*60 - (startMinutes + 60 - endMinutes);
        }
        
    return total_minutes;
}

结果:

Please inout the start time (startHours,startMinutes,startIsAM(1:AM;0:PM)):
11 59 1
Please inout the end time (endHours,endMinutes,endIsAM(1:AM;0:PM)):
12 01 0
The difference value of the two time is 2 minutes!

Please inout the start time (startHours,startMinutes,startIsAM(1:AM;0:PM)):
11 59 1
Please inout the end time (endHours,endMinutes,endIsAM(1:AM;0:PM)):
11 58 1
The difference value of the two time is 1439 minutes!
时间: 08-28

The time machine-时间机器计算差值(二十四小时内)的相关文章

输入两个时间戳,计算差值

<?php date_default_timezone_set("Asia/Shanghai"); //date_default_timezone_set("UTC"); //date_default_timezone_set("PRC"); //输入两个时间戳,计算差值,也就是相差的小时数,如返回2:10,则表示输入的两个时间相差2小时10分钟  function hours_min($start_time,$end_time){  if

MySQL计算相邻两行某列差值的方法

简述 博主最近因工作任务缠身,都无暇顾及到我的这片自留地了.前段时间稍有空闲,花了较多的精力学习<啊哈算法>,从中学习到很多之前没有太注重的内容,收益颇丰.但是这些算法题目还没有看完,等后面有时间了,还需重新自我温习一下前面所写的内容,并且继续耕耘后面的算法知识. 今天稍微有点时间,总结一下博主近期工作中所遇到的一些难题,希望借此机遇总结一下类似问题的解决方法,也算是一种积累吧. 背景 我们在司机的手机APP里预置了定时上报GPS数据的功能,功能设置为了APP每15秒收集一次GPS定位地址,然

java中获取日期的差值

转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/42121485 当想到要计算差值,我们肯定想的是"2014.12.14"-"2014.12.20"=4,这种方法,但是java并没有直接给我们这样的方法,所以我想的是,将字符串转化为Date类型,继而又将 date转化为Calendar类型,通过Calendar.add()方法来解决这个方法. package lgx.java.test; imp

php 日期 - 计算2个日期的差值

1 /** 2 * 日期-计算2个日期的差值 3 * @return int 4 */ 5 public function get_difference($date, $new_date) { 6 $date = strtotime($date); 7 $new_date = strtotime($new_date); 8 return abs(ceil(($date - $new_date)/86400)); 9 }

Hibernate中HQL的日期差值计算,可计算相差多少秒

最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函数 JPAQL HQL CURRENT_DATE() 返回数据库当前日期 CURRENT_TIME() 时间 时间函数 JPAQL HQL CURRENT_TIME() 返回数据库当前时间 SECOND(d) 从日期中提取具体秒 时间函数 HQL SECOND(时间字段) 空的时候返回null MI

MVC 下 ajax调用 日期差值计算

背景: 服务项目已有服务期起止时间From-To 现在要根据用户输入的新的起始时间, 和该服务期的原有区间值, 计算出新的服务期截止时间 即 NewServiceToDateTime = NewServiceFromDateTime + ( OldServiceToDateTime - OldServiceFromDateTime) 本示例的效果: 1.日期转换 及 差值计算 2.mvc 下 ajax 调用及赋值 相关代码如下: 后台Controller下Action处理 public Date

js计算两个日期的天数差值

js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Number}天数 */ function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2006-12-18格式 var aDate, oDate1, oDate2, iDays aDate = sDate1.split("-") oDate1 = new

oracle计算两个时间的差值(XX天XX时XX分XX秒)

在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上代码: CREATE OR REPLACE FUNCTION F_GET_DIFF_TIME(START_TIME IN DATE, END_TIME IN DATE) RETURN VARCHAR2 IS DIFF_TIME VARCHAR2(50); BEGIN SELECT TDAY || '

计算两个DateTime的差值

基本做法(d2的日期应大于d1的日期,d1.Subtract(d2)返回的不是负数,而是0): 若想算"2017-2-13 23:59:59"到"2017-2-14 0:00:01"这两个时间相差的天数,那应该是1天,但是用上述的代码得到的只有2秒的时间差,若想知道天数的差值,应先进行转换,去掉时分秒(Convert.ToDateTime(aimTime.ToShortDateString())):