-1

タスクの期日を今日の 8:45 として保存しました。ただし、ログには期日が次のように表示されます

2013-04-26 01:45:46 +0000

何を与える?これが私のコードです

#import "DatePickerViewController.h"
#import <Parse/Parse.h>
#import "ListItemObject.h"

@class ListItemObject;

@interface DatePickerViewController ()


@end

@implementation DatePickerViewController

@synthesize dateLabel;
@synthesize pick;
@synthesize listFieldText;



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    pick.timeZone = [NSTimeZone localTimeZone];

    UIBarButtonItem *saveDate = [[UIBarButtonItem alloc]
                                 initWithTitle:@"Save Date"
                                 style:UIBarButtonItemStyleDone
                                 target:self
                                 action:@selector(saveList:)];
    self.navigationItem.rightBarButtonItem = saveDate;
    [pick addTarget:self action:@selector(updateDateLabel:) forControlEvents:UIControlEventValueChanged];
}

-(IBAction)saveList:(id)sender {
    NSLog(@"%@", pick.date);
    [ListItemObject saveListItem:[PFUser currentUser] withName:listFieldText withDate:pick.date];

    [self.navigationController popViewControllerAnimated:YES];
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}


-(IBAction)updateDateLabel:(id)sender {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterLongStyle];
    [formatter setTimeStyle:NSDateFormatterMediumStyle];
    dateLabel.text = [formatter stringFromDate:pick.date];

}

私がしたことと同様のことをする必要がありNSDateFormatterますか?

4

2 に答える 2

4

表示される日付と時刻は、保存した時刻と同じですが、GMT で表されます。これは、NSDateが単一の時点を表しており、さまざまなタイム ゾーンの時刻の書式設定や調整に関する情報がないためです。NSDatepick.date によって返されたログを記録すると、一般的な GMT で時刻が表示されます。

NSDateFormatterあなたがしたように、を使用してupdateDateLabel():

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterLongStyle];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
dateLabel.text = [formatter stringFromDate:pick.date];

は、ローカル タイム ゾーンに合わせて調整された時刻を提供します。これは 8:45 に一致するはずです。

于 2013-04-26T02:15:24.503 に答える
1

これ+0000は、日付が UTC タイム ゾーンで表示されていることを意味します。からプロパティをNSLog(@"%@", someDate)返すだけです。値を特定のタイム ゾーンに合わせて調整する場合は、 のプロパティを設定する必要があります。descriptionNSDatetimeZoneNSDateFormatter

于 2013-04-26T02:12:23.970 に答える