简体   繁体   English

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

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

Hello I'm Beginner in ios I Have create Custom UIDatePicker View This show right date and time but when we click on done button then this show date right but time is not right ....So how do this .... 您好,我是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);

this picker showh right time and date in UI but when we click done button(not mention here)then it show .... DateTime.text=date picker is 2013-07-03 05:22:57 +0000 after this format it shows 2013-07-03 12:00:57 +0000 此选择器在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

When we Select any time then this show only above time ....Date is right ...but time is wrong so ....solve this problem 当我们选择任何时间时,则仅在时间上方显示....日期是正确的...但是时间是错误的,所以..解决此问题

this code may be help you 此代码可能会帮助您

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);

It will print the proper time. 它将打印正确的时间。

This may be an issue of NSTimeZone. 这可能是NSTimeZone的问题。

You can try this 你可以试试这个

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