#define k_datePicker_height 150
#define k_datePicker_width [UIScreen mainScreen].bounds.size.width-40
@interface ViewController (){
UIDatePicker *datePickerView;
}
@property (weak, nonatomic) IBOutlet UILabel *showDate;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self initDatePicker];
}
-(void)initDatePicker
{
//初始化, DatePicker有默认宽高,实例后就可以获得系统提供的frame值
datePickerView = [[UIDatePicker alloc]init];
datePickerView.frame = CGRectMake(20, CGRectGetHeight(self.view.frame)-CGRectGetHeight(datePickerView.frame), k_datePicker_width, k_datePicker_height);
datePickerView.backgroundColor = [UIColor redColor];
[self.view addSubview:datePickerView];
//监听值的改变
[datePickerView addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged];
/**
* 时间选择器类型 datePickerMode
* typedef NS_ENUM(NSInteger, UIDatePickerMode) {
UIDatePickerModeTime,
UIDatePickerModeDate,
UIDatePickerModeDateAndTime,
UIDatePickerModeCountDownTimer,
};
* @return return value description
*/
datePickerView.datePickerMode = UIDatePickerModeDateAndTime;
/**
* 主动修改显示语言 CFStringTokenizer 默认根据设备语言变换
* 英文:"en" 简体中文:"zh-Hans" 繁体中文:"zh-Hant"
*
*/
NSLocale *locale = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hans"];
datePickerView.locale = locale;
//设置通用日历(一般可以忽略设置) if nil default is [NSCalendar currentCalendar]
datePickerView.calendar = nil;
/**
* 设置UIDatePicker最远时间 有以下两种方法
*
*/
//方法1、根据当前日历时间设置 dateComponents 偏移值差,得到最大时间
// NSCalendar *calendar = [NSCalendar currentCalendar];
// //设置偏差
// NSDateComponents *dateComponents = [[NSDateComponents alloc]init];
// [dateComponents setYear:10];
// [dateComponents setMonth:0];
// [dateComponents setDay:0];
// [dateComponents setMinute:0];
// [dateComponents setHour:0];
// [dateComponents setSecond:0];
//
// NSDate *maxDate = [calendar dateByAddingComponents:dateComponents toDate:[NSDate date] options:0];
// datePickerView.minimumDate = [NSDate date];
// datePickerView.maximumDate = maxDate;
//方法2、简单实用
NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:3600*24*365*20];
datePickerView.minimumDate = [NSDate date];
datePickerView.maximumDate = maxDate;
//===========================================
//当前在datePicker 中首先显示的日期
// datePickerView.date = [NSDate dateWithTimeIntervalSinceNow:3600*24];
// [datePickerView setDate:[NSDate date] animated:YES];
//时区 GMT(详情见 NSTimeZone文章)
// datePickerView.timeZone = nil;
//@countDownDuration
datePickerView.countDownDuration = 10*60;
//最小间隔分钟值 @minuteInterval (适用于 UIDatePickerModeTime、UIDatePickerModeCountDownTimer、UIDatePickerModeDateAndTime)
datePickerView.minuteInterval = 5;
}
#pragma mark - 选取时间
- (IBAction)clickDate:(id)sender
{
//当前时间转字符串
NSDate *date = [NSDate date];
NSDateFormatter *dateFor = [[NSDateFormatter alloc]init];
dateFor.dateFormat = @"yyyy/MM/dd HH:mm:ss";
NSString *dateStr = [dateFor stringFromDate:date];
self.showDate.text = dateStr;
NSDate *strForDate = [self stringToDate:@"2015-01-01 10:30:20" formatter:@"yyyy-MM-dd HH:mm:ss"];
}
- (NSDate *)stringToDate:(NSString *)datetime formatter:(NSString*)format {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[formatter setDateFormat:format];//yyyy-MM-dd
NSDate *date = [formatter dateFromString:datetime];
#if !__has_feature(objc_arc)
[formatter release];
#endif
return date;
}
-(void)changeDate:(UIDatePicker*)datePicker
{
NSLog(@"date=%@",datePicker.date);
}