0

我有NSDate,如果我使用它会显示如下NSLog(@"%@", date.description);

2010-12-31 15:00:00 +0000

它会显示为好像我使用过NSLog(@"%@", [date descriptionWithLocale:[[NSLocale currentLocale] localeIdentifier]]);

2011 年 1 月 1 日星期六 12:00:00 AM 日本标准时间

但如果我使用它会显示如下NSLog(@"%@", [date formattedDateString]);

2010-01-01 00:00:00 +0900

我在哪里犯错?

- (NSString *)formattedDateString {
    return [self formattedStringUsingFormat:@"YYYY-MM-dd HH:mm:ss ZZZ"];
}

- (NSString *)formattedStringUsingFormat:(NSString *)dateFormat {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:dateFormat];
    NSString *ret = [formatter stringFromDate:self];
    [formatter release];
    return ret;
}
4

3 回答 3

3

我得到了我需要的如下:

-(NSString *)formattedDateString {
  return [self formattedStringUsingFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
}

于 2010-12-31T13:38:55.443 回答
1

你有一个 NSDate 的子类,对吧?我唯一的猜测是您在覆盖代码的其他地方犯了一些错误,可能是在设置日期的时间组件时(可以这么说),以便描述字符串或其源数据未正确更新。

编辑:哦,你成功了,太好了。迟了几秒。:) 干杯!

于 2010-12-31T13:41:44.693 回答
0

两者都2010-01-01 00:00:00 +900指向2010-12-31 15:00:00 +000同一时间。

编辑
两者都2011-01-01 00:00:00 +900指向2010-12-31 15:00:00 +000同一时间。

你碰巧住在 GMT+9(比如说东京)吗?

于 2010-12-31T13:00:03.313 回答