2015-07-10 91 views
-2

我知道這個問題已經有幾個問題了,但是無論我對代碼做什麼,我都會遇到同樣的錯誤。我在模擬器中工作,我的位置設置爲我的長/緯度。當我嘗試將當前日期轉換爲零時,分,秒,我總是得到這樣的結果:iOS設置日期爲MM // DD/YY 00:00:00

2015-07-10 08:53:19.868 xxxxxxxxxxxxxxxxx[2184:7462272] Today at start of day:2015-07-10 04:00:00 +0000 

這裏是我的代碼:

NSDate* today = [[NSDate alloc] init]; 

    NSCalendar* currentCalendar = [NSCalendar currentCalendar]; 
    NSDateComponents* dateComponents = [currentCalendar components:NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitYear fromDate:today]; 

    NSInteger thisMonth = [dateComponents month]; 
    NSInteger thisDay = [dateComponents day]; 
    NSInteger thisYear = [dateComponents year]; 

    NSDateComponents* dayComponents = [[NSDateComponents alloc] init]; 
    [dayComponents setDay:thisDay]; 
    [dayComponents setMonth:thisMonth]; 
    [dayComponents setYear:thisYear]; 


    NSDate* todayAtMidnight = [currentCalendar dateFromComponents:dayComponents]; 

    NSLog(@"Today at start of day:%@", todayAtMidnight); 

即使添加

[dayComponents setHour:0]; the hour still comes out as 4. 

什麼我做錯了嗎?

回答

1

爲了得到今天開始,你可以使用

NSCalendar *calendar = [NSCalendar currentCalendar]; 

NSDateComponents *components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit 
              fromDate:[NSDate date]]; 

[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 

NSLog(@"date %@", [calendar dateFromComponents:components]); 

請確保您有正確的時區

+0

Upvoted大家,但把你的,因爲我已經使用日期組件。感謝大家的幫助。 – PruitIgoe

1

2015-07-10 04:00:00 +0000是UTC,而不是當地時區。

要在當地時區顯示出來,使用NSDateFormatter:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm"; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
NSLog([dateFormatter stringFromDate:todayAtMidnight]); 
1

由於系統時區爲UTC,因此請使用NSDateFormatter

NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; 

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

NSDate * curDate = [formatter dateFromString:[NSDate date]]; 

然後你會得到2015-07-10 00:00:00

+0

如何將NSDate格式提供給DateFromString方法? –

相關問題