需要计算相应的时间差,请问该怎么办?

题目描述

在计算机系统的时间显示上,通常以hh:mm:ss格式来显示,即时:分:秒,每段均以两个数位显示,如12:02:59,表示12时2分59秒。
现给出两个这样格式的时间,请计算出它们的时间差,并以该格式显示出来。

输入格式

共两行,每行均为按hh:mm:ss格式的时间信息。

输出格式

一行,按hh:mm:ss 格式输出时间差。

样例输入

00:00:01
00:01:00

样例输出

00:00:59

数据规模

心有法竹
浏览 176回答 2
2回答

胡子哥哥

估计这道题不让用DateTime的相关函数,否则太简单了。 下面的例子,从校验用户的输入,直到计算时间差,都是用系统的其他函数(非datetime相关),有效时间的范围是:00:00:00~24:00:00 ,可以个位输出,例: 0:1:2. --- 为了对比,给出了使用TDateTime相关函数及不使用的方法。program&nbsp;time_difference;uses&nbsp;strutils,&nbsp;sysutils;type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//方法一:&nbsp;使用TDateTime&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getTimeDiff(const&nbsp;stime1&nbsp;:&nbsp;string;&nbsp;const&nbsp;stime2&nbsp;:&nbsp;string;&nbsp;var&nbsp;sdiff:&nbsp;string)&nbsp;:&nbsp;Boolean;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt1,&nbsp;dt2,&nbsp;dtdiff:&nbsp;TDateTime;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt1&nbsp;:=&nbsp;StrToDateTime(stime1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt2&nbsp;:=&nbsp;StrToDateTime(stime2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtdiff&nbsp;:=&nbsp;dt1&nbsp;-&nbsp;dt2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTimeToString(sdiff,&nbsp;'hh:mm:ss',&nbsp;dtdiff);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;E:EConvertError&nbsp;do&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getTimeDiff&nbsp;:=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;&nbsp;&nbsp;&nbsp;//方法二:&nbsp;不使用TDateTime&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getTimeDiff_2(const&nbsp;stime1&nbsp;:&nbsp;string;&nbsp;const&nbsp;stime2&nbsp;:&nbsp;string;&nbsp;var&nbsp;sdiff:&nbsp;string)&nbsp;:&nbsp;Boolean;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time_1,&nbsp;time_2,&nbsp;time_diff&nbsp;:&nbsp;longint;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_hour,&nbsp;t_minute,&nbsp;t_second&nbsp;:&nbsp;longint;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;getTimeInSeconds(stime1,&nbsp;time_1)&nbsp;then&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;getTimeInSeconds(stime2,&nbsp;time_2)&nbsp;then&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time_diff&nbsp;:=&nbsp;time_1&nbsp;-&nbsp;time_2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;time_diff&nbsp;<&nbsp;0&nbsp;then&nbsp;time_diff&nbsp;:=&nbsp;-time_diff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_hour&nbsp;:=&nbsp;&nbsp;time_diff&nbsp;div&nbsp;3600;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_minute&nbsp;:=&nbsp;&nbsp;time_diff&nbsp;mod&nbsp;3600&nbsp;div&nbsp;60;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_second&nbsp;:=&nbsp;&nbsp;time_diff&nbsp;-&nbsp;t_hour&nbsp;*&nbsp;3600&nbsp;-&nbsp;t_minute&nbsp;*&nbsp;60;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdiff&nbsp;:=&nbsp;Format('%.2d:%.2d:%.2d',&nbsp;[t_hour,&nbsp;t_minute,&nbsp;t_second]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(true);&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;&nbsp;&nbsp;&nbsp;//方法二用到的函数&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getTimeInSeconds(const&nbsp;stime&nbsp;:&nbsp;string;&nbsp;var&nbsp;time_in_seconds&nbsp;:&nbsp;longint)&nbsp;:&nbsp;Boolean;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_hh,&nbsp;s_mm,&nbsp;s_ss&nbsp;:&nbsp;string;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hour,&nbsp;minute,&nbsp;second,&nbsp;errcode&nbsp;:&nbsp;integer;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_hh&nbsp;:=&nbsp;ExtractDelimited(1,&nbsp;stime,&nbsp;[':']);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_mm&nbsp;:=&nbsp;ExtractDelimited(2,&nbsp;stime,&nbsp;[':']);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_ss&nbsp;:=&nbsp;ExtractDelimited(3,&nbsp;stime,&nbsp;[':']);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Val(s_hh,&nbsp;hour,&nbsp;errcode);&nbsp;if&nbsp;errcode&nbsp;<>&nbsp;0&nbsp;then&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Val(s_mm,&nbsp;minute,&nbsp;errcode);&nbsp;if&nbsp;errcode&nbsp;<>&nbsp;0&nbsp;then&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Val(s_ss,&nbsp;second,&nbsp;errcode);&nbsp;if&nbsp;errcode&nbsp;<>&nbsp;0&nbsp;then&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;(hour&nbsp;in&nbsp;[0..24])&nbsp;then&nbsp;exit&nbsp;(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;(minute&nbsp;in&nbsp;[0..59])&nbsp;then&nbsp;exit&nbsp;(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;(second&nbsp;in&nbsp;[0..59])&nbsp;then&nbsp;exit&nbsp;(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(hour&nbsp;=&nbsp;24)&nbsp;and&nbsp;(&nbsp;(minute&nbsp;<>&nbsp;0)&nbsp;or&nbsp;(second&nbsp;<>&nbsp;0)&nbsp;)&nbsp;then&nbsp;exit(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time_in_seconds&nbsp;:=&nbsp;hour&nbsp;*&nbsp;3600&nbsp;+&nbsp;minute&nbsp;*&nbsp;60&nbsp;+&nbsp;second;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(true);&nbsp;&nbsp;&nbsp;&nbsp;end;//主程序var&nbsp;&nbsp;&nbsp;&nbsp;stime1,&nbsp;stime2&nbsp;:&nbsp;String;&nbsp;&nbsp;&nbsp;&nbsp;//t_sec_1,&nbsp;t_sec_2&nbsp;:&nbsp;Longint;&nbsp;&nbsp;&nbsp;&nbsp;stdiff&nbsp;:&nbsp;string;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln&nbsp;('Input&nbsp;two&nbsp;times&nbsp;(hh:mm:ss):');&nbsp;&nbsp;&nbsp;&nbsp;readln(stime1);&nbsp;&nbsp;&nbsp;&nbsp;readln(stime2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//方法一&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;getTimeDiff(stime1,&nbsp;stime2,&nbsp;stdiff)&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln(stdiff)&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln('Error&nbsp;happened.');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//方法二&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;getTimeDiff_2(stime1,&nbsp;stime2,&nbsp;stdiff)&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln('Diff.&nbsp;',&nbsp;stdiff)&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln('Error&nbsp;happened.');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end.运行:Input&nbsp;two&nbsp;times&nbsp;(hh:mm:ss):12:34:5623:45:001.&nbsp;11:10:042.&nbsp;11:10:04

炎炎设计

constm=300;var i:byte;a,b,s:integer;beginb:=0;s:=0;for i:=1 to 12 dobeginread(a);if a>m+b thenbeginwriteln(-i);exit;end;if m+b-a>=100thenbegins:=s+100*((m+b-a) div 100);b:=(m+b-a)mod 100;endelse b:=m+b-a;end;writeln(1.2*s+b:0:0);end.wikioi里面的1057
打开App,查看更多内容
随时随地看视频慕课网APP