3

私は履歴アプリケーションに取り組んでいるので、JC の前後の日付に対処する必要があります。

「01/01/-200」という形式の文字列を解析しようとしていますが、「01/01/200」で作業している間は null の日付が返されます。

これが私のコードです:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc]init] autorelease];
[dateFormatter setDateFormat:@"dd/MM/y"]; // @TODO Get negative date
[dateFormatter setLenient:NO];

NSDate* date = [dateFormatter dateFromString:dateString];
return date;

「01/01/200 BC」という形式でも試してみましたsetDateFormat:@"dd/MM/y G"が、うまくいきません。mvds が彼の回答で示唆しているように、シミュレーターで「01/01/200 BC」という形式を試しましたが、機能しています...問題は iPad (バージョン 3.2.1)でのみ発生します。

これを適切に行う方法を知っていますか?

4

2 に答える 2

2

私はこれを試しました:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc]init] autorelease];
[dateFormatter setDateFormat:@"dd/MM/y G"];
NSDate *date = [dateFormatter dateFromString:@"01/01/200 BC"];
NSLog(@"refdate %@",[dateFormatter stringFromDate:date]);
date = [date addTimeInterval:24*3600*365*2];
NSLog(@"2 years later %@",[dateFormatter stringFromDate:date]);

出力:

refdate 01/01/200 BC
2 years later 01/01/198 BC

これは3.2のiPadシミュレーターであるため、最新のSDKではありませんが、それでもiPadです。これを実行すると、異なる結果が得られますか?

于 2010-07-30T21:00:36.630 に答える
1

私はついにトリックを見つけました。問題は、私のiPadがフランス語であるため、時代のフォーマットが異なることです。

  • BCは「av.J.-C」です。
  • ADは「ap.J.-C」です。

そのため、解析時に正しい形式を取得するためにXMLファイルを変更する必要がありました。

日付をAD-BC形式で表示するために、後で変換します。

+ (NSString*) convertIntoBCADString:(NSString*) originalString 
{
    NSString* newString = [originalString stringByReplacingOccurrencesOfString:@"av. J.-C." withString:@"BC"];
    return [newString stringByReplacingOccurrencesOfString:@"ap. J.-C." withString:@"AD"]; 
}
于 2010-08-16T12:18:10.777 に答える