繁体   English   中英

如何从iOS中的Custom UIDatePicker获得正确的时间

[英]How to get right time from Custom UIDatePicker in ios

您好,我是ios的初学者,我已经创建了Custom UIDatePicker View这个显示正确的日期和时间,但是当我们单击完成按钮时,这个显示正确的日期和时间是不正确的....那么该怎么做....

UIDatePicker *DatePicker;
UITexField  *DateTime; 
if ([[UIScreen mainScreen] bounds].size.height >480)
{
     DatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,350,320,50)];
}
else
{
     DatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,270,320,50)];
}
DatePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleTopMargin;
 DatePicker.datePickerMode = UIDatePickerModeDateAndTime;
 DatePicker.date = [NSDate date];
[self.DateTime setInputView:DatePicker];
 DatePicker.userInteractionEnabled=YES;
[self.view addSubview:DatePicker];
 UIDatePicker *picker = (UIDatePicker*)self.DateTime.inputView;

 self.DateTime.text = [NSString stringWithFormat:@"%@",picker.date];
 NSLog(@"date picker is %@",self.DateTime.text);

 NSDateFormatter  *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss +HHmm"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSDate  *myDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%@",DateTime.text]];
NSLog(@"%@", [dateFormatter stringFromDate:myDate]);

NSDateFormatter  *anotherDateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setAMSymbol:@"AM"];
 [dateFormatter setPMSymbol:@"PM"];
[anotherDateFormatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
NSLog(@"%@", [anotherDateFormatter stringFromDate:myDate]);

DateTime.text =[anotherDateFormatter stringFromDate:myDate];
NSLog(@"datetime is %@",DateTime.text);

此选择器在UI中显示正确的时间和日期,但是当我们单击“完成”按钮(此处未提及)时,它将显示...。 DateTime.text=date picker is 2013-07-03 05:22:57 +0000此格式后的DateTime.text=date picker is 2013-07-03 05:22:57 +0000节目2013-07-03 12:00:57 +0000

03/07/2013 12:00 AM
datetime is 03/07/2013 12:00 AM

当我们选择任何时间时,则仅在时间上方显示....日期是正确的...但是时间是错误的,所以..解决此问题

此代码可能会帮助您

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    //[formatter setTimeZone:[NSTimeZone systemTimeZone]];
    [formatter setDateFormat:@"dd-MM-yyyy hh:mm"];
    strDatetime = [formatter stringFromDate:picker.date];
    [datetimeLbl setText:strDatetime];
 NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
 [outputFormatter setDateFormat:@"HH:mm"]; //24hr time format
 NSString *dateString = [outputFormatter stringFromDate: picker.date];

 NSLog(@"%@",dateString);

它将打印正确的时间。

这可能是NSTimeZone的问题。

你可以试试这个

NSTimeInterval seconds; // assume this exists
NSDate* ts_utc = [NSDate dateWithTimeIntervalSince1970:seconds];

NSDateFormatter* df_utc = [[[NSDateFormatter alloc] init] autorelease];
[df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df_utc setDateFormat:@"yyyy.MM.dd G 'at' HH:mm:ss zzz"];

NSDateFormatter* df_local = [[[NSDateFormatter alloc] init] autorelease];
[df_local setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
[df_local setDateFormat:@"yyyy.MM.dd G 'at' HH:mm:ss zzz"];

NSString* ts_utc_string = [df_utc stringFromDate:ts_utc];
NSString* ts_local_string = [df_local stringFromDate:ts_utc];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM