gpt4 book ai didi

ios - NSDateIntervalFormatter 打印日期,即使 dateStyle 设置为 NSDateFormatterNoStyle

转载 作者:搜寻专家 更新时间:2023-10-30 20:15:59 30 4
gpt4 key购买 nike

我正在使用 NSDateIntervalFormatter 来格式化一个小时范围。他们总是在同一天,所以我不想显示日期。在美式英语语言环境中,它们看起来像是晚上 9:00 - 10:00。

当时间跨过午夜时,问题就出现了。然后,结束日期在技术上是在第二天,并且 NSDateIntervalFormatter 打印日期,即使它的 dateStyle 设置为 NSDateFormatterNoStyle:

NSDateComponents *comps = [[NSDateComponents alloc] init];
comps.year = 2015;
comps.month = 5;
comps.day = 12;
comps.hour = 21;

NSDate *startDate = [[NSCalendar currentCalendar] dateFromComponents:comps];

// next day, at midnight
comps.day = comps.day + 1;
comps.hour = 0;
NSDate *endDate = [[NSCalendar currentCalendar] dateFromComponents:comps];

NSDateIntervalFormatter *formatter = [[NSDateIntervalFormatter alloc] init];
formatter.timeZone = [NSTimeZone localTimeZone];

formatter.dateStyle = NSDateFormatterNoStyle;
formatter.timeStyle = NSDateFormatterShortStyle;

NSString *string = [formatter stringFromDate:startDate toDate:endDate];
NSLog(@"%@", string);
// expected: 9:00 PM - 12:00 AM
// actual: 5/12/2015, 9:00 PM - 5/13/2015, 12:00 AM

有没有办法让它始终隐藏日期,而不必单独格式化两个日期并用破折号连接它们?

最佳答案

如果您从日期组件中删除 Y/M/D,它会按预期工作:

NSDateComponents *comps = [[NSDateComponents alloc] init];
// comps.year = 2015;
// comps.month = 5;
// comps.day = 12;
comps.hour = 21;

NSDate *startDate = [[NSCalendar currentCalendar] dateFromComponents:comps];

// next day, at midnight
comps.day = comps.day + 1;
comps.hour = 24;
NSDate *endDate = [[NSCalendar currentCalendar] dateFromComponents:comps];

NSDateIntervalFormatter *formatter = [[NSDateIntervalFormatter alloc] init];
formatter.timeZone = [NSTimeZone localTimeZone];

formatter.dateStyle = NSDateFormatterNoStyle;
formatter.timeStyle = NSDateFormatterShortStyle;

NSString *string = [formatter stringFromDate:startDate toDate:endDate];
// string = 9:00 PM - 12:00 AM

同样有趣的是,如果删除 comps.day + 1,它会显示:

1/3/1, 9:00 PM - 1/4/1, 12:00 AM

这对我来说毫无意义...... 1/3?!

更新:只有当 endDate 比 startDate 早一天时,它似乎才有正确的结果。如果休息超过一天,则不会。这感觉像是未定义的领域,无法按预期工作。

关于ios - NSDateIntervalFormatter 打印日期,即使 dateStyle 设置为 NSDateFormatterNoStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201286/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com