UIDatePicker日期/时间选取器的用法 与+NSDate和NSString的相互转换

 UIDatePicker日期/时间选取器

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。你也可以对其进行定制,令其使用任何范围的日期。

UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统。本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需要掌握本文中使用的方法就好。

  1. NSDate* _date = [ [ NSDate alloc] initWithString:@"2012-03-07 00:35:00 -0500"];

一、创建日期/时间选取器

UIDatePicker 使用起来比标准 UIPickerView 更简单。他会根据你指定的日期范围创建自己的数据源。使用它只需要创建一个对象:

  1. UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0.0,0.0,0.0,0.0)];

默认情况下选取会显示目前的日期和时间,并提供几个表盘,分别显示可以选择的月份和日期、小时、分钟、以及上午、下午。因此用户默认可以选择任何日期和时间的组合。

二、日期选取器模式

日期/时间选取器支持4种不同模式的选择方式。通过设置 datePickerMode 属性,可以定义选择模式:

  1. datePicker.datePickerMode = UIDatePickerModeTime;

支持的模式:

  1. typedef enum {
  2. UIDatePickerModeTime,           // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)
  3. UIDatePickerModeDate,           // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)
  4. UIDatePickerModeDateAndTime,    // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
  5. UIDatePickerModeCountDownTimer  // Displays hour and minute (e.g. 1 | 53)
  6. } UIDatePickerMode;

三、时间间隔

你可以将分钟表盘设置为以不同的时间间隔来显示分钟,前提是该间隔要能够让60整除。默认间隔是一分钟。如果要使用不同的间隔,需要改变 minuteInterval属性:

  1. datePicker.minuteInterval = 5;

四、日期范围

你可以通过设置mininumDate 和 maxinumDate 属性,来指定使用的日期范围。如果用户试图滚动到超出这一范围的日期,表盘会回滚到最近的有效日期。两个方法都需要NSDate 对象作参数:

  1. NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];
  2. NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];
  3. datePicker.minimumDate = minDate;
  4. datePicker.maximumDate = maxDate;

如果两个日期范围属性中任何一个未被设置,则默认行为将会允许用户选择过去或未来的任意日期。这在某些情况下很有用处,比如,当选择生日时,可以是过去的任意日期,但终止与当前日期。如果你希望设置默认显示的日期,可以使用date属性:

  1. datePicker.date = minDate;

此外,你还可以用 setDate 方法。如果选择了使用动画,则表盘会滚动到你指定的日期:

  1. [ datePicker setDate:maxDate animated:YES];

五、显示日期选择器

  [ self.view addSubview:datePicker];

需要注意的是,选取器的高度始终是216像素,要确定分配了足够的空间来容纳。

六、读取日期

  1. NSDate* _date = datePicker.date;

由于日期选择器是 UIControl的子类 (与UIPickerView不同),你还可以在UIControl类的通知结构中挂接一个委托:

  1. [ datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged ];

只要用户选择了一个新日期,你的动作类就会被调用:

  1. -(void)dateChanged:(id)sender{
  2. UIDatepicker* control = (UIDatePicker*)sender;
  3. NSDate* _date = control.date;
  4. /*添加你自己响应代码*/
  5. }

文章出处:http://blog.csdn.net/iukey

NSDate和NSString的转换

用于uidate,picker。。

+(NSDate*) convertDateFromString:(NSString*)uiDate
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
    [formatter setDateFormat:@"yyyy年MM月dd日"];
    NSDate *date=[formatter dateFromString:uiDate];
    return date;
}

输入的日期字符串形如:@"1992-05-21 13:08:08"

- (NSDate *)dateFromString:(NSString *)dateString{

NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];

NSDate *destDate= [dateFormatter dateFromString:dateString];

[dateFormatter release];

return destDate;

}

- (NSString *)stringFromDate:(NSDate *)date{

NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

//zzz表示时区,zzz可以删除,这样返回的日期字符将不包含时区信息。

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];

NSString *destDateString = [dateFormatter stringFromDate:date];

[dateFormatter release];

return destDateString;

}

- (IBAction)handleDidPressBtn1{

NSLog(@"%@/n", [selfdateFromString:@"2011-08-09 12:02:01"]);

NSLog(@"%@/n", [selfstringFromDate:[selfdateFromString:@"2011-08-09 12:02:01"]]);

}

输出结果如下:

2011-08-09 04:02:01 +0000

2011-08-09 12:02:01 GMT+08:00

 

时间: 2024-10-13 16:12:04

UIDatePicker日期/时间选取器的用法 与+NSDate和NSString的相互转换的相关文章

UIDatePicker 日期/时间选取器(滚轮)—IOS开发

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作.你也可以对其进行定制,令其使用任何范围的日期. UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统.本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需

UIDatepicker 日期时间选取器(滚动)

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作.你也可以对其进行定制,令其使用任何范围的日期. UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统.本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需

iOS开发自定义时间选取器

又是一年的暑假日期而至,小孩子放假,都会到在外打工的父母身边.孩子想父母,父母也思念着自己的孩子.我身边的亲戚朋友的孩子 也都来了.这个暑假又该热闹起来. 努力什么时候都不晚 我有一个表妹,今年参加完高考,对自己的成绩不是特别满意.上次我回老家,刚好她给我一起来上海.准备来上海锻炼一下. 车上我问她,准备去哪上学?她说不想上了,想打工.我没有怎么劝她,我想让她体验一下打工的生活,她就知道还是上学好. 一个高中生,出来找工作,困难可想而知.经姐姐介绍,进了一家餐厅工作.工资也不是很高.干了两天,我

适合移动应用的日期时间拾取器

这是一个适合移动设备WEB应用的日期和时间拾取器,在桌面版的日期拾取器我们一般用jQuery UI的datepicker插件,而移动手机版的日期拾取器则可以根据项目需求选择与jQuery Mobile配合的mobiscroll.js插件,它提供了友好的日期和时间选择操作界面,且易于配置和使用. 查看演示 下载源码 HTML 首先我们加载相关插件和样式文件,该插件基于jQuery和jQuery.mobile所以首先需要加载这两个库文件,然后再加载mobiscroll.js插件以及相关CSS文件.

mysql日期时间类型总结

MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间       日期格式                 日期范围 ------------ ---------   --------------------- ----------------------------------------- datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31

PHP 中日期时间函数 date() 用法总结

[导读] date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考.格式化日期date() 函数的第一个参数规定了如何格式化日期 时间.它使用字母来表示日期和时间 格式化日期date() 函数的第一个参数规定了如何格式化日期/时间.它使用字母来表示日期和时间的格式.这里列出了一些可用的字母: •d - 月中的天 (01-31)•m - 当前月,以数字计 (01-12)•Y - 当前的年(四位数)您可以在我们的 PHP Date 参考手

Java 8 的日期时间新用法

1.// The current date and timeLocalDateTime.now();// construct from valuesLocalDate.of(2012, 12, 12);LocalDate.of(2012, Month.DECEMBER, 12);// Somewhere in the middle of 1970LocalDate.ofEpochDay(150);// the train I took home todayLocalTime.of(17, 18)

【Android】日期拾取器、时间拾取器与菜单

在安卓4.4的工程中,每次新建工程同样会出现Helloworld,但不同于以前的版本,现在的Helloworld还自带菜单.这篇文章配合安卓的常用组件日期拾取器.时间拾取器来讲解安卓菜单怎么修改.日期拾取器.时间拾取器两个组件很大,一般情况下,建议使用<[Android]多个Activity之间利用bundle传递数值>(点击打开链接)中介绍的方式,为日期拾取器.时间拾取器新开一个Activity进行交互. 如下图的一个app: 一进入app,在右下角里面显示当前的时间. 通过移动日期拾取器.

[Swift通天遁地]二、表格表单-(16)在表单行内嵌入日期和时间拾取器

本文将演示如何在表单行内嵌拾取器. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 现在开始编写代码,实现在表单行内嵌入日期和时间拾取器. 1 import UIKit 2 //首先在当前类文件中, 3 //引入以及安装的第三方类库 4 import Eureka 5 6 //修改当前视图控制器类的父类的名称 7 class ViewController: FormViewController { 8 9 override func viewDidLoad()