Ios 为什么我会得到;2010-01-01 00:00:00+;900“;从「;2010-12-31 15:00:00+;000“吗;?
我有NSDate,如果我使用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]),它将显示如下
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”表示日期本身的年份。看见