我用一个函数创建了简单的 ObjectiveC 动态库
NSString* DateTimeToString(NSDate* dt)
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY'-'MM'-'dd'T'HH':'mm':'ss"];
NSString *stringDate = [formatter stringFromDate:dt];
[formatter release];
return stringDate;
}
如您所见,此函数将以 2011-04-14T09:29:53 格式返回日期。
我已经将此库集成到我的 Delphi XE3 测试项目中
function _DateTimeToString(date: Pointer): Pointer; cdecl; external
'libTimeLib.dylib' name '_DateTimeToString';
function DateTimeToString(dt: TDateTime): string;
var
date: NSDate;
res: NSString;
begin
date := TNSDate.Wrap(TNSDate.OCClass.date);
res := TNSString.Wrap(_DateTimeToString((date as ILocalObject).GetObjectID));
Result := string(res.UTF8String);
end;
当我从我的 Delphi 项目中调用它时,它返回05/15/13,而在 XCode 项目中它返回正确的2013-05-15T16:42:42日期。
有人可以解释为什么 NSDateFormatter 在 Delphi 应用程序使用的库中不起作用吗?
更新
我在 Delphi 中创建了这个函数
function DateTimeToStringDelphi(): string;
var
formatter: NSDateFormatter;
stringDate: NSString;
begin
formatter := TNSDateFormatter.Create();
formatter.setDateFormat(NSSTR('YYYY-MM-dd HH:mm:ss'));
stringDate := formatter.stringFromDate( TNSDate.Wrap(TNSDate.OCClass.date) );
formatter.release;
result := string(stringDate.UTF8String);
end;
它还以 05/15/13 格式返回日期,所以这不是库问题。