2013-05-16 17 views
0

我創建了簡單的ObjectiveC動態庫與一個功能MacOS X的動態庫在Delphi XE3項目不正確的工作

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; 

當我把它從我的德爾福的項目它的XCode項目返回13年5月15日雖然它返回正確2013-05-15T16:42:42日期。

有人能解釋爲什麼NSDateFormatter不能在Delphi應用程序中使用的庫中工作嗎?

UPDATE

我創建這個功能在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; 

而且它也返回日期格式13年5月15日,所以它不是庫的問題。

回答

0

問題是與默認NSDateFormatterBehaviour並使用此調用

TNSDateFormatter.OCClass.setDefaultFormatterBehavior(NSDateFormatterBehavior10_4); 
已定