时间字符串的运算?

a_fi 2003-03-17 02:30:14
AnsiString ab=DBGridTopic->DataSource->DataSet->Fields->Fields[3]->AsString;
这句的意思是从数据库中取出时间字符串,例如:"02-5-29 17:27:01"

我想对这种类型的时间字符串做以下运算,请给我答案好吗?
①只保留日期,剩下“02-5-29”
②只保留时间,剩下“17:27:01”
③将这个时间字符串转换成可以计算的时间,比方说现在的时间是:03-3-16 20:28,那么三天前的时间是03-3-13 20:28,三个月前的时间是 02-12-16 20:29,
这种计算是怎么来做的?这些如何用程序实现呢?
④如何计算日期对应的星期几呢?
⑤关于日期各个民族的表示方法不同,这对编程有多大影响,如何避免在不同语言的操作系统中出现的错误?
...全文
39 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jishiping 2003-03-17
  • 打赏
  • 举报
回复
①只保留日期
DBGridTopic->DataSource->DataSet->Fields->Fields[3]->AsDateTime.DateString();
②只保留时间
DBGridTopic->DataSource->DataSet->Fields->Fields[3]->AsDateTime.TimeString();
③将这个时间字符串转换成可以计算的时间
DBGridTopic->DataSource->DataSet->Fields->Fields[3]->AsDateTime 得到的是一个
TDateTime,直接对这个类型减去一个整数,就是几天前的日期。比如:
DBGridTopic->DataSource->DataSet->Fields->Fields[3]->AsDateTime-3; 就是得到的
日期的3天前的日期。
④如何计算日期对应的星期几呢?
对于TDateTime,可以使用 DayOfWeek()-1 来得到。注意 DayOfWeek()-1 的结果:0表示
星期日,1表示星期一,......,6表示星期六。
⑤关于日期各个民族的表示方法不同,如何避免在不同语言的操作系统中出现的错误?
在程序里显示指定日期及时间格式。主要有下面几个全局变量需要设定(不需要全部设定,
根据需要设定你需要的):
extern PACKAGE char DateSeparator;
extern PACKAGE AnsiString ShortDateFormat;
extern PACKAGE AnsiString LongDateFormat;
extern PACKAGE char TimeSeparator;
extern PACKAGE AnsiString TimeAMString;
extern PACKAGE AnsiString TimePMString;
extern PACKAGE AnsiString ShortTimeFormat;
extern PACKAGE AnsiString LongTimeFormat;
extern PACKAGE AnsiString ShortMonthNames[12];
extern PACKAGE AnsiString LongMonthNames[12];
extern PACKAGE AnsiString ShortDayNames[7];
extern PACKAGE AnsiString LongDayNames[7];
chongyiren 2003-03-17
  • 打赏
  • 举报
回复
①只保留日期,剩下“02-5-29”
AnsiString result1 = ab.SubString(1, ab.Length()-8).Trim();
②只保留时间,剩下“17:27:01”
AnsiString result2=ab.SubString(ab.Length()-7, 8);
③将这个时间字符串转换成可以计算的时间,比方说现在的时间是:03-3-16 20:28,那么三天前的时间是03-3-13 20:28,三个月前的时间是 02-12-16 20:29,
这种计算是怎么来做的?这些如何用程序实现呢?
TDateTime theday(result1);
TDateTime before3 = theday-3;
AnsiString stheday = FormatDateTime("yyyymmdd", theday);
AnsiString sbefore3 = FormatDateTime("yyyymmdd", before3);
④如何计算日期对应的星期几呢?
int day = theday.DayOfWeek();
DayOfWeek returns an integer between 1 and 7. Sunday is treated as the first day of the week and Saturday as the seventh.
⑤关于日期各个民族的表示方法不同,这对编程有多大影响,如何避免在不同语言的操作系统中出现的错误?
设定DateSeparator、TimeSeparator、ShortDateFormat、LongDateFormat等变量,至于时间差的问题要自己处理。(例如:台湾用的民国纪年与大陆的就相差年份)
eastnofail 2003-03-17
  • 打赏
  • 举报
回复
日期型的数据可以直接相加相减,比如:
2003-2-5 - 1 = 2003-2-4
对月份进行操作是IncMonth();
extern PACKAGE TDateTime __fastcall IncMonth(const TDateTime Date, int NumberOfMonths);
kata520 2003-03-17
  • 打赏
  • 举报
回复
StrToDateTime("yy-mm-dd");
StrToDateTime("hh:mm:ss");

13,871

社区成员

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

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