日付・時刻を取得するUIDatePickerの使い方を完全マスター

UIDatePickerとは

ユーザーが日付や時刻を直感的に指定・取得できる非常に便利なパーツです。
iPhoneを使っていれば1度は見たことあるはず(↓)
UIDatePickerImage

UIDatePickerの使い方

まず、xibファイルに配置します。
実際にクルクル回したときの日付・時刻を表示するラベルも配置しておきます。
datepicker01

 

ヘッダーファイル(.h)に定義します。

#import <UIKit/UIKit.h>

@interface TestViewController : UIViewController
{
    UILabel *lb;
    UIDatePicker *dp;
}

@property (nonatomic, retain) IBOutlet UILabel *lb;
@property (nonatomic, retain) IBOutlet UIDatePicker *dp;

- (IBAction)DateChanged:(id)sender;

@end

 

ソースファイル(.m)に追記します。
『DateChanged』はDatePickerがクルクル動かされる度に呼び出されるメソッドです。
ここではクルクル動かす度にラベルに日付・時刻を表示するというプログラムを書いています。

#import "TestViewController.h"

@interface TestViewController ()

@end

@implementation TestViewController

@synthesize lb, dp;

- (void)dealloc {
    [lb release];
    [dp release];
    [super dealloc];
}

- (IBAction)DateChanged:(id)sender{
    
    //ラベルに表示する日付・時刻のフォーマットを指定
    NSDateFormatter *df = [[NSDateFormatter alloc]init];
    df.dateFormat = @"yyyy年MM月dd日 HH時mm分";
    
    //ラベルに指定したフォーマットで表示
    lb.text = [df stringFromDate:dp.date];
    
}

- (void)viewDidLoad
{

 

最後に関連付けをします。

IBOutletの関連付け

・Labelと『lb』の関連付け
datepicker02

・Datepickerと『dp』の関連付け
datepicker03

 

IBActionの関連付け

・Datepickerと『DateChanged』の関連付け(タイプはValueChangedにします)
datepicker04

 

以上が出来たら、シミュレータで実行してみます。
Datepickerをクルクル動かすとラベルに日付・時刻が表示されるはずです。
datepicker05

 

UIDatePickerの小技・応用編

分の刻み幅を指定する方法

変数名.minuteInterval = x;
でx分ごとの刻み幅になります。

例えば、先ほどのプログラムのviewDidLoad内に以下を追記します。

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    dp.minuteInterval = 30;
    
}

すると、このように30分刻み幅になっています。
datepicker06

 

日時の選択範囲を指定する方法

変数名.minimumDate = 日時A;
変数名.maximumDate = 日時B;
で日時A〜日時Bの範囲内でしか選択できないようにできます。

例えば、先ほどのプログラムのviewDidLoad内に以下を追記します。

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss +0900";
    
    //選択できる最低(min)の日付・時刻を指定
    NSString *mindateString = @"2013-02-15 08:12:00 +0900";
    
    //選択できる最高(max)の日付・時刻を指定
    NSString *maxdateString = @"2013-02-19 19:43:00 +0900";
    
    //指定した選択範囲をセット
    dp.minimumDate = [dateFormatter dateFromString:mindateString];
    dp.maximumDate = [dateFormatter dateFromString:maxdateString];
    
}

これで、2013年02月15日08時12分〜2013年02月19日19時43分の間のみ有効になります。
実行すると、選択できない範囲はグレーアウトされます。
maximumDate

 

日時の選択範囲を期間で指定する方法

今日から前後◯日の期間だけを選択可能にしたい場合、
dateWithTimeIntervalSinceNowを使いますが、これは具体例で覚えます。

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    //期間の指定
    dp.minimumDate = [NSDate dateWithTimeIntervalSinceNow:86400*(-1)];
    dp.maximumDate = [NSDate dateWithTimeIntervalSinceNow:86400*2];
    
}

86400というのは、1日が86400秒なので“1日分”を表します。
つまり、上の例なら1日前〜2日後までを選択可能な範囲にします。
dateWithTimeIntervalSinceNow

 

UIDatePickerの表示形式を変更する方法

変数名.datePickerMode = 形式名;
で変更できます。形式名の代表例を以下にまとめておきます。

UIDatePickerModeCountDownTimer UIDatePickerModeCountDownTimer
UIDatePickerModeDate UIDatePickerModeDate
UIDatePickerModeDateAndTime UIDatePickerModeDateAndTime
UIDatePickerModeTime UIDatePickerModeTime

例えば、以下のように使えばOKです。

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    //表示形式の指定
    dp.datePickerMode = UIDatePickerModeTime;
    
}

 
以上です。

DatePickerはサイズが大きいので、
DatePicker専用の画面を作るとよいでしょう。

コメントを残す

サブコンテンツ

このページの先頭へ