我正在尝试将两个日期之间的持续时间转换为格式"'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'"
。我的预期输出示例是:(P0Y0M0DT0H0M0.002S
这是使用DurationFormatUtils的 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
是3/5/2015, 16:46:20.3。如果我将格式化程序上的语言环境设置为nil
并将日期和时间格式设置为NSDateIntervalFormatterFullStyle
,则duration
具有以下格式:2015 年 3 月 5 日星期四,下午 4:51:36 GMT-05:00 - 2015 年 3 月 5 日星期四,格林威治标准时间 05:00 下午 4:52:01。
如何使用 ISO8601 句点格式(或至少为"'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'")格式化两个日期之间的持续时间?