为啥我从“2010-12-31 15:00:00 +000”得到“2010-01-01 00:00:00 +900”?
Posted
技术标签:
【中文标题】为啥我从“2010-12-31 15:00:00 +000”得到“2010-01-01 00:00:00 +900”?【英文标题】:Why do I get "2010-01-01 00:00:00 +900" from "2010-12-31 15:00:00 +000"?为什么我从“2010-12-31 15:00:00 +000”得到“2010-01-01 00:00:00 +900”? 【发布时间】:2010-12-31 12:50:32 【问题描述】:我有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;
【问题讨论】:
【参考方案1】:我得到了我需要的如下:
-(NSString *)formattedDateString return [self formattedStringUsingFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
【讨论】:
那么问题是什么? 大写的“Y”给出了该日期的周开始的年份。小写的“y”给出了日期本身的年份。见Unicode Date Format Patterns。【参考方案2】:你有一个 NSDate 的子类,对吧?我唯一的猜测是您在覆盖代码的其他地方犯了一些错误,可能是在设置日期的时间组件(可以这么说)时,导致描述字符串或其源数据未正确更新。
编辑:哦,你成功了,太好了。迟了几秒。 :) 干杯!
【讨论】:
【参考方案3】: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(比如说东京)吗?
【讨论】:
怎么样?按时区划分,2011 年 1 月 1 日可能会与 2010 年 12 月 31 日混淆,但这似乎相差了一年。 唐:你是对的。我是盲人:) 尽管 OP 在问题的标题上打错字,但可能性很小。 是的,我在东京。我看到就像你说的那样,2011-01-01 00:00:00 +900 与 2010-12-31 15:00:00 +000 相同,但我得到了 2010-01-01 15:00:00 +000 ,这是我的问题。以上是关于为啥我从“2010-12-31 15:00:00 +000”得到“2010-01-01 00:00:00 +900”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我从 scipy.optimize.fmin 得到不正确的结果?