2011-06-29 23 views
0

タイムゾーンを取得したいが、傾ける。私は私にのNSLogがショーで使用iphoneタイムゾーンを取得する方法は?

はshow.timeある= 2011年6月29日午前4時20分○○秒0000

ここに私のコードです。

-(IBAction)Save:(id)sender{ 
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; 
    //[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    // Get the current date 
    NSDate *pickerDate = [self.datePicker date]; 

    // Break the date up into components 
    NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) 
                fromDate:pickerDate]; 
    NSDateComponents *timeComponents = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) 
                fromDate:pickerDate]; 

    // Set up the fire time 
    NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
    [dateComps setDay:[dateComponents day]]; 
    [dateComps setMonth:[dateComponents month]]; 
    [dateComps setYear:[dateComponents year]]; 
    [dateComps setHour:[timeComponents hour]]; 
    // Notification will fire in one minute 
    [dateComps setMinute:[timeComponents minute]]; 
    [dateComps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
    //[dateComps setSecond:[timeComponents second]]; 



    timedata = [calendar dateFromComponents:dateComps]; 
    [dateComps release]; 

    DataClass *obj=[DataClass getInstance]; 

    obj.showdate = timedata; 

    //NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    //[defaults setObject:timedata forKey:@"selectdate"]; 
    //NSLog(@"save time = %@",obj.showdate); 

    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

それはあなたが望むものは明らかではありません。どこにどのように時間を表示したいですか? –

+0

こんにちは、私は時間を表示したいshow.time = 2011-06-29 12:28:00 +8000このような。 – ahyong87

+0

[Covert NSStringからNSDateへの異なるタイムゾーンでの可能な複製](http://stackoverflow.com/questions/910060/covert-nsstring-to-nsdate-in-a-different-timezone) –

答えて

0

あなたはGMTにごNSDateComponentsオブジェクトのタイムゾーンを設定している:

[dateComps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 

したがって、あなたの日付はGMTであると解釈されます。あなたは、デバイスが入っている時間帯をしたい場合は、systemTimeZoneを使用します。

[dateComps setTimeZone:[NSTimeZone systemTimeZone]]; 

を一般的には、the docs for timeZoneWithAbbreviation:で述べたように、略語はあいまいなことができます。デバイスの場所に関係なく常に動作するように特定のタイムゾーンを取得する場合は、timeZoneForSecondsFromGMT:を使用できます。

あなたがしたい場合にも、あなたのアプリケーションのタイムゾーンを設定するのではなく、日付関連オブジェクトを作成するときに、常に特定のタイムゾーンを参照することができます。

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:60*8]]; 
NSTimeZone * appTZ = [NSTimeZone defaultTimeZone]; 
関連する問題