UIDatePicker以24小时格式返回值

时间:2010-12-05 18:23:45

标签: iphone objective-c

我是iPhone开发的新手,现在开始使用我的第一款应用。我在视图上有一个UIDatePicker,如果用户点击保存,日期选择器的当前时间应该保存在数据库中(格式为hh:mm)。

现在,问题是我的UIDatePicker有24小时格式来选择所需的小时和分钟(我通过将模拟器中的iPhone设置设置为“瑞士”和“德语”来配置)。如果我在日期选择器中选择,例如17:00,则以下代码在NSLog中生成5:00:

NSDateFormatter *datePickerFormat = [[NSDateFormatter alloc] init];
[datePickerFormat setDateFormat:@"hh:mm"];
NSString *datePickerStringToSave = [datePickerFormat stringFromDate:datePicker.date];
NSLog(@"%@", datePickerStringToSave);

日期选择器是否有可能以24小时格式返回所选时间?或者我可以配置NSDateFormatter以显示24小时内返回的时间吗?我已经尝试将日期选择器的属性检查器中的“本地”设置设置为我的国家/地区和语言,但这不起作用...

感谢您的回答!

4 个答案:

答案 0 :(得分:5)

我认为这里的问题是@"hh:mm"中的小写h强制datePickerFormat进入12小时模式。尝试将该行更改为:

[datePickerFormat setDateFormat:@"HH:mm"]; 

有关正确日期格式模式的信息,请查看this guide

答案 1 :(得分:1)

我的贡献有点晚,但日期/时间选择器以24小时格式出现在屏幕上的事实是由于手机的用户日期/时间设置,因此UIDatepicker默认为用户手机设置。

答案 2 :(得分:0)

+(NSDateFormatter *)GetPickerDateFormater
{
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLocale *locale1 = [[NSLocale alloc] initWithLocaleIdentifier:@"NL"];
NSTimeZone *timeZone1 = [NSTimeZone timeZoneWithName:@"IST"];
[formatter1 setTimeZone:timeZone1];
[formatter1 setLocale:locale1];
[locale1 release],
locale1 = nil;
return formatter1;
}

- (void)action:(id)sender forEvent:(UIEvent *)event {

  txtToDate.text = [NSString stringWithFormat:@"%@",
                        [[self GetPickerDateFormater] stringFromDate:DatepickerView.date]];
}

答案 3 :(得分:0)

let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.time 
datePicker.locale = Locale.init(identifier: "NL")