我從資料庫里面查詢出日期,delphi中為string型別,格式為:
s1:='20140101';
s2:='20140908';
我想在delphi中自動計算s2減去s1的天數之差然后把這個天數加到我從資料庫里面查詢到的另外一個日期s3上面去。
求賜教!
uj5u.com熱心網友回復:
轉換成date型別,然后用DaysBetween(需參考DateUtils單元)函式計算兩個日期的差uj5u.com熱心網友回復:
var S1,S2:string;
begin
s1:='20140101';
s2:='20140908';
FieldByName('日期').AsString:=FormatDateTime('yyyyMMdd',StrToDate(S2)-StrToDate(S1));
end;
僅供參考。
uj5u.com熱心網友回復:
報錯:'20140908' is not a valid date.uj5u.com熱心網友回復:
s:='20140908';Insert('-', s, 5);
Insert('-', s, 8);
形成yyyy-MM-dd
然后strtodate
然后daysbetween
uj5u.com熱心網友回復:
function cnStrToDateTime(AStr: string):TDateTime;var
Setting : TFormatSettings;
begin
Setting := TFormatSettings.Create(LOCALE_USER_DEFAULT);
Setting.ShortDateFormat:='yyyymmdd';
Setting.DateSeparator:='-';
Setting.TimeSeparator:=':';
Setting.LongTimeFormat:='hh:nn:ss.zzz';
Result:= StrToDateTime(AStr, Setting);
end;
IncDate(DateBetween(cnStrToDateTime('20160101'), cnStrToDateTime('20150203')))
uj5u.com熱心網友回復:
IncDate(OtherDate, cnStrToDateTime('20160101') - cnStrToDateTime('20150203'))uj5u.com熱心網友回復:
function cnStrToDateTime(AStr: string):TDateTime;var
Setting : TFormatSettings;
begin
Setting := TFormatSettings.Create(LOCALE_USER_DEFAULT);
Setting.ShortDateFormat:='yyyymmdd';
Setting.DateSeparator:='';
Setting.TimeSeparator:=':';
Setting.LongTimeFormat:='hh:nn:ss.zzz';
Result:= StrToDateTime(AStr, Setting);
end;
IncDate(OtherDate, cnStrToDateTime('20160101') - cnStrToDateTime('20150203'))
uj5u.com熱心網友回復:
前題是你的日期時間引數是符合的,否則要加入:在軟體的啟動表單的OnCreat事件中加入:
DateSeparator:='';
ShortDateFormat:='yyyyMMdd';
LongDateFormat:='yyyy''年'',MM''月'',dd''日''';
TimeSeparator:=':';
TimeAMString:='AM';
TimePMString:='PM';
ShortTimeFormat:='hh:mm';
LongTimeFormat:='hh:mm:ss';
uj5u.com熱心網友回復:
為什么要全域化???????????
uj5u.com熱心網友回復:
這是設定作業系統的日期時間默認格式,不要這些代碼,要通過作業系統設定一致也可。uj5u.com熱心網友回復:
頂一個學習學習~~~
uj5u.com熱心網友回復:
不錯,向各位老師學習uj5u.com熱心網友回復:
用TFormatSettings轉換成日期,再進行加減運算。樓上已有代碼,不再copy。uj5u.com熱心網友回復:
data的整數部分就是天,直接加減就行了。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67815.html
標籤:VCL組件開發及應用
