求如何TDateTime减去分钟

bushy 2009-05-25 10:31:45
现在想实现TDateTime类型,减去一定得minute数后的时间,
请问有什么简单的方法,
TDateTime都是double,那double的分钟数是哪几位呢?
...全文
229 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fairchild811 2009-05-26
  • 打赏
  • 举报
回复
uh,我用的cb09,报错了,可能是unicodestring的问题
yangangs 2009-05-26
  • 打赏
  • 举报
回复
3楼和8楼的很好,简单易懂
周药师 2009-05-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fairchild811 的回复:]
uh,我用的cb09,报错了,可能是unicodestring的问题
[/Quote]
如果是CB2009的话

AnsiString ls_time;
改成
String ls_time or UnicodeString ls_time 就可以了...
i_love_pc 2009-05-26
  • 打赏
  • 举报
回复
dt为double类型,个位为天,1分钟即是1.0/24/60
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDateTime dt;
int m=10;//减去的分钟数
dt=Now();
dt=dt-m*1.0/24/60;
ShowMessage(dt);
}
//---------------------------------------------------------------------------
isky2006 2009-05-26
  • 打赏
  • 举报
回复
8楼的方法比较方便
padiu01 2009-05-26
  • 打赏
  • 举报
回复
mark
回去试验下
周药师 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fairchild811 的回复:]
试了一下3楼的方法,简单可行,学习了.
不过, ls_Date =FormatDateTime("yyyy-mm-dd hh:mm",ls_time); 的第二个参数是TDateTime的,不是AnsiString的,需要先把AnsiString的先转成TDateTime
[/Quote]

第二个参数 可以是TDateTime的,也可以是AnsiString的 ,
如果是AnsiString的话
//AnsiString ls_time, ls_NewTime;
系统会强制转换...
fairchild811 2009-05-25
  • 打赏
  • 举报
回复
试了一下3楼的方法,简单可行,学习了.
不过, ls_Date =FormatDateTime("yyyy-mm-dd hh:mm",ls_time); 的第二个参数是TDateTime的,不是AnsiString的,需要先把AnsiString的先转成TDateTime
fairchild811 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fairchild811 的回复:]
unsigned short year, month, day, hour, min, sec, msec;
DecodeDate(Now(), year, month, day);
DecodeTime(Now(), hour, min, sec, msec);

上述代码可以获得now的年,月,日,小时,分钟...

直接将min的值减去你需要减去的值,当然此时要考虑退位的情况,比如15-25,此时,可能前面的年,月,日,小时都需要退位.

将得到的新数值再EncodeDate(...),EncodeTime(...)即可
[/Quote]

得到的新数值 EncodeDateTime(y, m, d, h, m, s, ms);
#include <DateUtils.hpp> //要使用EncodeDateTime必需要包含这个,其它函数不用
using namespace std;
周药师 2009-05-25
  • 打赏
  • 举报
回复


//使用IncMinute()函数
//----------------------------------------------------------------
//加此头文件
#include "DateUtils.hpp"
//----------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString ls_time, ls_NewTime;
TDateTime ls_Date ;
//加为正数,减为负数...
int number = -1 ;
ls_time = "2009-05-25 23:12";
ls_Date =FormatDateTime("yyyy-mm-dd hh:mm",ls_time);
ls_NewTime = IncMinute(ls_Date,number).FormatString("yyyy-mm-dd hh:mm");
ShowMessage(ls_NewTime);}
fairchild811 2009-05-25
  • 打赏
  • 举报
回复
unsigned short year, month, day, hour, min, sec, msec;
DecodeDate(Now(), year, month, day);
DecodeTime(Now(), hour, min, sec, msec);

上述代码可以获得now的年,月,日,小时,分钟...

直接将min的值减去你需要减去的值,当然此时要考虑退位的情况,比如15-25,此时,可能前面的年,月,日,小时都需要退位.

将得到的新数值再EncodeDate(...),EncodeTime(...)即可
Behard 2009-05-25
  • 打赏
  • 举报
回复
StrToTime("0:01:00")* xx;

13,871

社区成员

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

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