【问题标题】:Relative Date Formatting, output for past dates?相对日期格式,过去日期的输出?
【发布时间】:2011-08-19 15:29:56
【问题描述】:

我正在考虑使用-[NSDateFormatter setDoesRelativeDateFormatting:] 将日期表示为“今天”或“昨天”。我只查看过去的日期,但很好奇我会看到哪些英国本地化选项。

只是

  • “今天”
  • “昨天”

或任何更复杂的东西,例如

  • “前天”

是否在任何地方列出了可能的输出,以便我了解正确显示它们所需的屏幕空间?

【问题讨论】:

    标签: objective-c ios cocoa-touch nsdateformatter date-formatting


    【解决方案1】:

    是的。当您运行以下程序时,它们会在您的控制台窗口中列出:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
    
            NSDateFormatter * formatter = [[NSDateFormatter  alloc] init];
            [formatter setDateStyle:NSDateFormatterFullStyle];
            [formatter setDoesRelativeDateFormatting:YES];
    
            NSCalendar * cal = [[NSLocale currentLocale] objectForKey:NSLocaleCalendar];
            NSDateComponents * minusOneDay = [[NSDateComponents alloc] init];
            [minusOneDay setDay:-1];
            NSDate * today = [NSDate date];
            NSDate * date = [NSDate date];
    
            while( 1 > [[cal components:NSYearCalendarUnit fromDate:date toDate:today options:0] year] ){
    
                NSLog(@"%@", [formatter stringFromDate:date]);
                date = [cal dateByAddingComponents:minusOneDay
                                            toDate:date
                                           options:0];
            }
    
        }
        return 0;
    }
    

    在我的语言环境中,列表似乎只有“明天”、“今天”和“昨天”。

    【讨论】:

    • 其他语言不同。例如,在法语中,有一个“后天”案例。
    • @KevinConner:日期格式化程序知道当前的语言环境,因此考虑了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多