2013-10-02 12 views
1

嗨,我创造,我现在用的设置选择器,而是一个NSDate当我输出选择器日期的NSLog它总是在实际的选择器中显示的时间晚一个小时。的NSDate现在通常为1个小时关闭我的ios模拟器

另外作为测试我注意到代码: 的NSDate *现在= [NSDate的日期]; //在模拟器上给我当前的日期和时间 NSLog(@“Date and Time now:%@”,now);

的NSLog的值总是落后1个小时我的仿真器显示的时间。

我的问题是为什么?

在此先感谢:)

UPDATE ------------------------------------ --------------------------------------------

我做几个更多的测试,结果证明使用NSGregorian日历的NSDate返回了正确的时间,然后使用currentCalendar的NSDate关闭了1个小时。

所以我的新问题是为什么呢?我检查了我的模拟器上的设置,并且设备将其日历设置为格里高利。这可能是由于时区差异?如果是这样,那么我是否有办法让选择器使用与用户设备相同的时区?

谢谢

+0

尝试使用以下+(id)dateWithNaturalLanguageString:(NSString *)字符串区域设置:(id)localeDictionary打印出日期并使用[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]作为localeDictionary。 –

+0

嗨本,谢谢你的评论,但我得到了一个错误 - 没有已知的类选择器的方法'dateWithNaturalLanguageString:' –

回答

2

我认为这是因为您的模拟器时间设置为默认时区(EN)。 NSDate始终从当地时间开始设置。当你在你的设备上试用它时,它将是正确的。

我有这样的代码在我的项目和精细工作:

NSDate*now = [NSDate date]; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"dd.MM.yyyy"]; 

我创建日期,并将其存储到我的CoreData。总是那个时间将我的实际时间在我的设备上。

恭喜你的新iPhone反正。欢迎来到大苹果家族! :)

+0

嗨Mayo323,感谢您的评论,你是正确的NSDate确实会返回正确的时间。我做了一些更多的测试,结果发现使用NSGregorian日历的NSDate返回了正确的时间,然后使用currentCalendar的NSDate关闭了1个小时。所以我的新问题是为什么呢?我检查了我的模拟器上的设置,并且设备将其日历设置为格里高利。如何让我的选取器与我的模拟器/设备具有相同的时区? –

+0

仿真器将始终为-1hr。在设备上将是从您的设备本地时区的时间。 – Mayo323

+0

不要笑,但我没有iphone来测试我的应用程序呢。尽管如此,我将很快得到一个。感谢您的帮助,我会标记你的答案是正确的(因为我确定它):) –