怎么将秒数转换为时间格式?

ghy3 2004-11-30 03:03:52
有一个double类型的数,表示秒数,怎么将它转换为标准时间格式(hh:mm:ss)?
...全文
2587 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghy3 2004-11-30
  • 打赏
  • 举报
回复
先感谢niiv(一叶)。

可能我上面说的不太好,我在仔细说一下:

我有两个time_t类型的时间值,time_t t_clear,t_occur;这两个时间值是已知的;
现在想求它们之间的差值,就是求持续时间。
所以我先用difftime()函数得出他们之间的差,接着就是要将这个差转换为持续时间,看这个事件持续了几小时几分几秒。
double ldv_temp = difftime(t_clear,t_occur);

比如说,早上07:30:00起床,09:30:00去上班,这之间的时间差为两小时,既02:00:00。
其实使用笨法“秒数/3600”也可以,我就是想找一个现成的函数来实现。

楼上这么多朋友来帮忙,让我很感动。一起谢了。
真如实观 2004-11-30
  • 打赏
  • 举报
回复
楼上说的好!
niiv 2004-11-30
  • 打赏
  • 举报
回复
楼主所谓:“double类型的数,表示秒数”意思不明确。
1、如果是用BCB的时间系统,可参考以下例子:
  double a = Now();
Edit1->Text=FormatDateTime("hh:mm:ss",a);

2、如果你所称的秒数不是BCB的时间系统,那么你要想好,这个秒数是从哪一个时刻计算起的,即0秒时的参考点在那里,这个换算系统将是一个复杂的算法。

3、从你的测试程序看,你对BCB的时间系统有误解

  这是我的测试程序:
double temp = 110178;
TDateTime time = TDateTime(temp);
Edit3->Text=FormatDateTime("hh:mm:ss",time);

  BCB使用的double来表示时间,它的整数部分是天,小数部分才是秒(或者毫秒)
  所以
double temp = 110178;
  是表示了某一天的00:00:00,你可以试试这样
double temp = 110178.5;
  相信FormatDateTime("hh:mm:ss",time)的返回值应该在中午12:00:00。

4、如果你计算的是一天之内,从00:00:00计起的秒数,又希望借助BCB的时间系统,可以参考下例:
double temp = 110178;
temp = temp /(3600*24);//换算成为double的小数部分
TDateTime time = TDateTime(temp);
Edit3->Text=FormatDateTime("hh:mm:ss",time);
  



佛火 2004-11-30
  • 打赏
  • 举报
回复
AnsiString myformat(int s)
{
int l;
AnsiString output;
output+=String(FormatFloat("00",s/3600));
l = s % 3600;
output+=":"+String(FormatFloat("00",l/60));
l = l % 60;
output+=":"+String(FormatFloat("00",l));
return(output);
}
ghy3 2004-11-30
  • 打赏
  • 举报
回复
用秒数/3600这种方法我也想过,但是不知道有没有函数可以直接转换过来。


还有,samchoy() 这种方法我也试过了,结果显示为00:00:00。
这是我的测试程序:
double temp = 110178;
TDateTime time = TDateTime(temp);
Edit3->Text=FormatDateTime("hh:mm:ss",time);
fidt982 2004-11-30
  • 打赏
  • 举报
回复
最后一句也可以这样
Edit1->Text=StrToTime(IntToStr(iHour)+":"+IntToStr(iMin)+":"+IntToStr(iSen));
FallenAngel 2004-11-30
  • 打赏
  • 举报
回复
最后一句话是错的
Edit1->Text = AnsiString().sprintf("%0.2d:%0.2d:%0.2d", iHour, iMin, iSen) ;
samchoy 2004-11-30
  • 打赏
  • 举报
回复
TDateTime time = TDateTime(秒数);
Edit1->Text=FormatDateTime("hh:mm:ss",time);
mettomorrow 2004-11-30
  • 打赏
  • 举报
回复
int iHour=秒数/3600;
int iMin=(秒数-iHour*3600)/60;
int iSen=秒数-iHour*3600-iMin*60;
Edit1->Text=FormatDateTime("hh:mm:ss",IntToStr(iHour)+":"+IntToStr(iMin)+":"+IntToStr(iSen));

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧