如何将Delphi中的TDateTime转换位为VC中的time_t类型???(50分)

  • 主题发起人 主题发起人 ansili
  • 开始时间 开始时间
A

ansili

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将Delphi中的TDateTime转换位为VC中的time_t类型??
 
你只要把它分解成年月日时分秒,然后填到time_t结构就行了
 
填到time_t结构中就是一个结构啊,怎么转换为time_t(longint)啊
 
function DateTimeToCTime(t : TDateTime) : Longint;
function GetGMTBias: Integer;
var
info : TTimeZoneInformation;
Mode: DWord;
begin
Mode := GetTimeZoneInformation(info);
result := info.Bias;
case Mode of
TIME_ZONE_ID_STANDARD: result := result + info.StandardBias;
TIME_ZONE_ID_DAYLIGHT: result := result + info.DaylightBias;
end;
end;
function LocaleToGMT(const Value: TDateTime): TDateTime;
begin
result := Value + (GetGMTBias / MinsPerDay);
end;
begin
//(t-36526)*24*3600 肯定是整数
Result := Ceil(946656000 + (LocaleToGMT(t) - 36526) * 24 * 3600)
+ 57600;
end;
function CTimeToDateTime(ct : Longint) : TDateTime;
const
cDeltaDate : Integer = 25569; // 1970/01/01
cSecPerMint : Integer = 60;
cSecPerHour : Integer = (60*60);
cSecPerDay : Integer = (60*60*24);
var
hh, mm, ss : Word;
n : Integer;
begin
{// GMT=+8,格林时间+8时区(北京)}
//ct := ct - cSecPerHour * 8;
n := ct mod cSecPerDay;
hh := n div cSecPerHour;
n := n mod cSecPerHour;
mm := n div cSecPerMint;
ss := n mod cSecPerMint;
Result := (ct div cSecPerDay) + cDeltaDate + EncodeTime(hh, mm, ss, 0);
end;
 
To : Wolfding
转换出来不对哦。
 
Delphi 的 TDateTime 类型好象就是双精度整型。
Delphi 中有一群 DateTimeTo... 的函数,因此可能不会那么复杂吧?VC 的 time_t 不太熟悉,日期时间相关的有 SYSTEMTIME、FILETIME 等结构以及一些函数,转换应该不太困难。
 
不对?是不是差个8小时啊,我也忘了,好像是因为时区的原因,因为当时我们做的那个接口他自己的时间好像不是按照中国的时区来做的,所以就将错就错了,稍微改一下就行了。
 
To : Wolfding
在那加8个小时啊?
 
CTime实际上就是个秒数,8小时等于8*3600秒,了解?
 
DateTimeToUnix,看看这个函数
仔细看看DateUtils单元,里面全是一些和日期有关的函数
 
To : Wolfding
就是时差的问题。
谢谢你。
 
还要这个,只要使用delphi自带的以下函数即可:
DecodeDateTime(ADate, AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);

t:=EncodeDateTime(AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);
 
后退
顶部