0

私はiWorldのiOS開発者です。私は以前にいくつかのiPhone/iPadアプリを開発しました。iPhoneで正しい時刻情報を何度か取得できませんでした。それはローカリゼーションによるものだと思います。

たとえば、今日の時間を切り捨てるコードがあります。(例: "05-04-2012 00:00:00")しかし、そのコードは常に8時間前に私が期待していたものに戻ります。(例: "05-03-2012 16:00:00)私が作業したコードは次のとおりです。

NSDate *today = [NSDate date];
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calender components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
today = [calender dateFromComponents:components];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
NSString *todayString = [formatter stringFromDate:today];
NSLog(@"Today is %@", todayString);

この問題を解決するためにあなたから話を聞きたいです。御時間ありがとうございます。

4

2 に答える 2

0

タイムゾーンをUTCに設定

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];
于 2012-05-04T16:21:03.017 に答える
0

正しい真夜中の時間を計算するコードを見つけました。次のコードログは、「05-06-2012 16:00:00」ではなく、「Today is05-07-20100:00:00」であることがわかりました。

NSDate *today = [NSDate date];
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calender components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
today = [calender dateFromComponents:components];

today = [today dateByAddingTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
NSString *todayString = [formatter stringFromDate:today];
NSLog(@"Today is %@", todayString);

SOをありがとう。

于 2012-05-07T09:19:26.080 に答える