【问题标题】:Date Format Like "Monday, December 10" wrong showing in ios 5.1日期格式如“12 月 10 日星期一”在 ios 5.1 中显示错误
【发布时间】:2013-02-05 07:26:33
【问题描述】:

我正在使用下面的代码。

NSString * weekdayString = [[self date] descriptionWithLocale:@"%A"];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
dateString = [NSString stringWithFormat:@"%@,%@",weekdayString,[dateFormatter stringFromDate:[self date]]];
NSArray * components = [dateString componentsSeparatedByString:@","];
dateString = [NSString stringWithFormat:@"%@,%@",[components objectAtIndex:0],[components objectAtIndex:1]];

它在模拟器和 ios 6.0 中运行良好,但在设备 (iPad) 中的 ios 5.1 中没有按预期显示。

【问题讨论】:

    标签: ios ipad ios5


    【解决方案1】:

    NSDate -descriptionWithLocale 被记录为采用NSLocale;您传递的是NSString,因此依赖于未记录的行为。

    还不清楚您要通过拆分为组件来实现什么 - 大概您已经假设 NSDateFormatterShortStyle 将始终包含逗号?文档也不保证这一点。

    您可能想要做的只是设置一个自定义日期格式字符串。从您帖子的标题看来,您可能想要EEEE, MMMM dd。所以例如

    // see QA1480 re: en_US_POSIX
    NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:usLocale];
    [dateFormatter setDateFormat:@"EEEE, MMMM dd"];
    dateString = [dateFormatter stringFromDate:[self date]];
    

    QA1480 解决了一个问题,该问题可能导致NSDateFormatter 在内部静默调整您的日期格式化程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      相关资源
      最近更新 更多