2 つの日付間の期間を形式に変換しようとしています"'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'"
。私の予想される出力の例は次のとおりです: (これはDurationFormatUtilsP0Y0M0DT0H0M0.002S
を使用する Android プロジェクトのポートです)。
私のテストケース:
NSDateIntervalFormatter *durationFormatter = [NSDateIntervalFormatter durationFormatter];
NSDate *date = [NSDate date];
NSDate *end = [date dateByAddingTimeInterval:25];
NSString *duration = [durationFormatter stringFromDate:date toDate:end];
XCTAssertTrue( [duration hasPrefix:@"P"], @"Actual String: %@", duration );
私のフォーマッタは次のように定義されています。
+ (NSDateIntervalFormatter*) durationFormatter {
static NSDateIntervalFormatter *formatter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
formatter = [[NSDateIntervalFormatter alloc] init];
formatter.dateTemplate = @"'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'";
});
return formatter;
}
これを実行すると、duration
2015年 3 月 5 日 16:46:20.3になります。フォーマッターのロケールを にnil
設定し、日付と時刻の形式を に設定するとNSDateIntervalFormatterFullStyle
、duration
次の形式になります。午後 4 時 52 分 01 秒 GMT-05:00。
2 つの日付間の期間を ISO8601 期間形式 (または少なくとも"'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'" ) でフォーマットするにはどうすればよいですか?