AnsiString类型的时间变量如何相减,在线等!

yjjzyr 2009-07-27 10:37:09
有两个时间变量如:AnsiString stime,etime;给它赋一定值后,如
stime="2008-12-9 1:18:07";
etime="2008-12-9 3:25:04";
如何得到他们两个之间的时间差值,最好是得到秒的差值;
另外,我刚才用TDateTime Detime=TDataTime(etime);为什么说TDataTime是未定义的函数。谢谢各位大侠!
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtu_3205017 2009-07-27
  • 打赏
  • 举报
回复
TDataTime <> TDateTime
Jim@luckeeinc.com 2009-07-27
  • 打赏
  • 举报
回复
stime="2008-12-9 1:18:07";
etime="2008-12-9 3:25:04";
TDateTime t1 = StrToDateTime(stime);
TDateTime t2 = StrToDateTime(etime);
取秒差用 SecondsBetween(t1,t2);
其他類似的還有 DaysBetween等等
記得include DateUtils.hpp
wtu_3205017 2009-07-27
  • 打赏
  • 举报
回复
我刚才用TDateTime Detime=TDataTime(etime);为什么说TDataTime是未定义的函数。

那是 TDateTime 没有参数为AnsiString 的构造函数

TDateTime的构造函数有以下:
__fastcall TDateTime()
__fastcall TDateTime(const TDateTime& src)
__fastcall TDateTime(const TDateTimeBase& src)
__fastcall TDateTime(const double src)
__fastcall TDateTime(const int src)
enum TDateTimeFlag {Date, Time, DateTime};
__fastcall TDateTime(const AnsiString& src, TDateTimeFlag flag = DateTime);
__fastcall TDateTime(unsigned short year, unsigned short month, unsigned short day);

__fastcall TDateTime(unsigned short hour, unsigned short min, unsigned short sec, unsigned short msec);
zhgwbzhd 2009-07-27
  • 打赏
  • 举报
回复
虽然有字符串可以转成时间,但是你要保证格式正确,否则就会得到错误的日期。

个人建议,你还不如弄两个变量,保存成时间格式,字符串只是这两个变量的显示。

要计算起时间来还是比较方便的。
i_love_pc 2009-07-27
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString stime,etime;
int n;
stime="2008-12-9 1:18:07";
etime="2008-12-9 3:25:04";
n=abs(24*60*60*(StrToDateTime(stime)-StrToDateTime(etime)));
ShowMessage(n);
}
肆水東澤 2009-07-27
  • 打赏
  • 举报
回复
虽然AnsiString可以对字符串+ - =的运算,但我觉得像你日期那么减得不到你想要的。
还是把问题分解,把时间取出转换再运算吧。

TDataTime是未定义,应该缺少头文件吧,systdate.h

13,825

社区成员

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

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