Ios 为什么我会得到;2010-01-01 00:00:00+;900“;从「;2010-12-31 15:00:00+;000“吗;?

Ios 为什么我会得到;2010-01-01 00:00:00+;900“;从「;2010-12-31 15:00:00+;000“吗;?,ios,nsdate,nsdateformatter,nsdatecomponents,Ios,Nsdate,Nsdateformatter,Nsdatecomponents,我有NSDate,如果我使用NSLog(@“%@”,date.description),它将显示如下 2010-12-31 15:00:00+0000 它将显示为我使用了NSLog(@“%@,[datedescriptionwithlocale:[[NSLocale currentLocale]localeIdentifier]]) 2011年1月1日星期六上午12:00:00 日本标准时间 但是如果我使用NSLog(@“%@,[date formattedDateString]),它将显示如下

我有NSDate,如果我使用
NSLog(@“%@”,date.description),它将显示如下

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

它将显示为我使用了
NSLog(@“%@,[datedescriptionwithlocale:[[NSLocale currentLocale]localeIdentifier]])

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

但是如果我使用
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;
}

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都指向同一时间


你是不是正好住在格林尼治时间+9点(比方说东京)?

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

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


你是不是正好住在格林尼治时间+9点(比方说东京)?

我得到了我需要的信息,如下所示:

-(NSString*)格式化日期字符串{
  返回[self-formattedStringUsingFormat:@“yyyy-MM-dd HH:MM:ss ZZZ”];
}


我得到了我需要的,如下所示:

-(NSString*)格式化日期字符串{
  返回[self-formattedStringUsingFormat:@“yyyy-MM-dd HH:MM:ss ZZZ”];
}


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


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

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


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

怎么会这样?2011年1月1日和2010年12月31日可能会被时区搞混,但这似乎要推迟一年。唐:你说得对。我是瞎子:)虽然这篇专栏文章在标题上打错了,但可能性很小。是的,我在东京。就像你说的,2011-01-01 00:00:00+900和2010-12-31 15:00:00+000是一样的,但我得到了2010-01-01 15:00:00+000,这是我的问题。怎么会这样?2011年1月1日和2010年12月31日可能会被时区搞混,但这似乎要推迟一年。唐:你说得对。我是瞎子:)虽然这篇专栏文章在标题上打错了,但可能性很小。是的,我在东京。我明白了,就像你说的,2011-01-01 00:00:00+900与2010-12-31 15:00:00+000相同,但我得到了2010-01-01 15:00:00+000,这是我的问题。那么第一个问题是什么?大写的“Y”表示该日期的一周开始的年份。小写字母“y”表示日期本身的年份。看。那么问题出在哪里呢?大写字母“Y”表示该日期的一周开始的年份。小写字母“y”表示日期本身的年份。看见