0

我在 NSDate 上编写了一个方法作为类别,它从日期返回一个字符串。格式为{四年数字}{两个月数字}{两天数字}。出于某种原因,格式化程序将当前年份作为四年数字返回,而不是返回日期的年份。这是我的代码:

- (NSString *) YYYYMMDD{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formatter setTimeStyle:NSDateFormatterNoStyle];
    [formatter setDateStyle:NSDateFormatterFullStyle];
    [formatter setDateFormat:@"YYYYMMdd"];   // This line is doing something odd, not sure why yet.

    NSString *dateAsString = [formatter stringFromDate:self];

    NSLog(@"Date: %@ String: %@", [self description], dateAsString);

   return dateAsString;

}

查看记录的行,您会注意到年份是不灵活的并且坚持当前年份,即使应该由日期对象表示的年份不是当前年份。

知道这是为什么吗?我使用了不正确的格式化程序吗?

4

2 回答 2

1

Y 应为小写:y

这对我有用:

+ (NSDateFormatter *) dateFormatter {
    static NSDateFormatter * formatter = nil ;
    if (formatter == nil) {
        formatter = [[NSDateFormatter alloc] init] ;
       [formatter setDateFormat:@"yyyyMMdd"] ;
    }
    return formatter ;
}

高温高压

于 2013-02-13T14:56:41.457 回答
1

正如数据格式指南中的评论所述:

一个常见的错误是使用 YYYY。yyyy 指定日历年,而 YYYY 指定年份(“一年中的一周”),用于 ISO 年-周日历。在大多数情况下,yyyy 和 YYYY 产生相同的数字,但它们可能不同。通常,您应该使用日历年。

所以试试:

[formatter setDateFormat:@"yyyyMMdd"];
于 2013-02-13T14:59:08.247 回答