一、UIDatePicker常用属性
UIDatePicker的继承关系:UIDatePicker:UIControl:UIView:UIResponder:NSObject
- (void)viewDidLoad
{
[super viewDidLoad];
/**
1、初始化 和 配置DatePicker模式
.datePickerMode UIDatePickerModeTime, //时间模式,显示 时 分 上下午
UIDatePickerModeDate, //日期模式,显示 年 月 日
UIDatePickerModeDateAndTime, //时间和日期模式,显示星期 月 日、时 分 上下午
UIDatePickerModeCountDownTimer, //计时模式,显示 时 分
*/
UIDatePicker *datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(10, 50, 300, 100)];
datePicker.datePickerMode = UIDatePickerModeDateAndTime;
[self.view addSubview:datePicker];
[datePicker addTarget:self action:@selector(datePickerAction:) forControlEvents:UIControlEventValueChanged];
/**
2、管理Date 和 Calendar
.calendar (NSCalendar) //设置日历
.locale (NSLocale) //设置本地化环境
.timeZone (NSTimeZone) //设置时区
.date (NSDate) //设置当前时间
- setDate:animated:
*/
datePicker.calendar = [NSCalendar currentCalendar];
datePicker.locale = [NSLocale currentLocale];
datePicker.timeZone = [NSTimeZone localTimeZone];
datePicker.date = [NSDate dateWithTimeIntervalSince1970:1445915340];
/**
3、配置时间属性
.minimumDate (NSDate) //设置最小时间点
.maximumDate (NSDate) //设置最大时间点
.minuteInterval //设置每一格的时间差
.countDownDuration (NSTimeInterval) //设置时间。注意:只适用于计时模式
*/
datePicker.minimumDate = [self dateFromString:@"2015-01-01 00:00:00" formatter:@"yyyy-MM-dd HH:mm:ss"];
datePicker.maximumDate = [self dateFromString:@"2016-01-01 00:00:00" formatter:@"yyyy-MM-dd HH:mm:ss"];
datePicker.minuteInterval = 2;
}
-(void)datePickerAction:(UIDatePicker *)datePicker
{
NSLog(@"date:%@",[self stringFromDate:datePicker.date formatter:@"yyyy-MM-dd HH:mm:ss"]);
NSLog(@"calendar:%@",datePicker.calendar);
NSLog(@"locale:%@",datePicker.locale);
NSLog(@"timeZone:%@",datePicker.timeZone);
}
二、日期格式NSDateFormatter
//补充:日期格式NSDateFormatter
-(NSDate *)dateFromString:(NSString *)dateStr formatter:(NSString *)formatter
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = formatter;
NSDate *date = [dateFormatter dateFromString:dateStr]; //字符串转时间
return date;
}
-(NSString *)stringFromDate:(NSDate *)date formatter:(NSString *)formatter
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = formatter;
NSString *dateStr = [dateFormatter stringFromDate:date]; //时间转字符串,世界时间转换为本地时间
return dateStr;
/* @"yyyy年-MM月-dd日 HH:mm:ss"
yyyy 包括纪元的四位数的年份。
yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
MM 月份数字。一位数的月份有一个前导零。
M 月份数字。一位数的月份没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
d 月中的某一天。一位数的日期没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
h 12 小时制的小时。一位数的小时数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
m 分钟。一位数的分钟数没有前导零。
ss 秒。一位数的秒数有一个前导零。
s 秒。一位数的秒数没有前导零。
*/
}
三、时间戳转为本地时间
1、时间戳转为本地时间
-(NSString *)getTimeWithTimeStamp:(NSString *)str
{
NSDateFormatter* formatter = [[NSDateFormatter alloc] init] ;
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"shanghai"]] ;
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate* date = [NSDate dateWithTimeIntervalSince1970:str.intValue]; //核心代码
NSString* dateString = [formatter stringFromDate:date];
return dateString;
}
2、通过时间戳来 剩余时间的计算
-(NSString *)hasDaysWithUserInfoDays:(NSString *)str
{
NSInteger returnDays = str.integerValue;
NSTimeInterval a=[[NSDate dateWithTimeIntervalSinceNow:0] timeIntervalSince1970];
NSString *timeString = [NSString stringWithFormat:@"%f", a];
NSInteger currentDays = timeString.integerValue;
NSInteger days = (returnDays -currentDays)/24/60/60;
NSString *hasDays = [NSString stringWithFormat:@"%ld",(long)days];
return hasDays;
}