【问题标题】:UIDatePicker return value in 24-hour-formatUIDatePicker 以 24 小时格式返回值
【发布时间】:2023-03-11 06:53:01
【问题描述】:

我是 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 小时内显示返回的时间吗?我已经尝试将日期选择器的属性检查器中的“本地”设置设置为我的国家和语言,但这不起作用...

感谢您的回答!

【问题讨论】:

  • SDK中没有UIDateSwitcher类...
  • 已经整改了,我自然是指UIDatePicker。对不起!

标签: iphone objective-c


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,但我想你可能误解了我的意思。我绝对可以在选择器中选择 24 小时日期(选择器显示 24 小时格式)但是,在上面的代码中,选择器返回一个 12 小时格式的值,当我选择 17:00 或像这样的东西。
  • 哎呀,我的错!我刚刚编辑了我的答案,并添加了一个指向指南的链接,说明为什么会这样。
  • 没问题,再次为第一个错误道歉!如果这回答了问题,您介意打勾吗?
  • 我一直在寻找解决方案 2 小时,这就像一个魅力..Upvoted !!!
【解决方案2】:

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

【讨论】:

  • 不完全是问题的答案,但这是我在谷歌上搜索的问题导致我来到这里。如果您的设备时钟设置为 24 小时模式,则“hh:mm”给出 24 小时时间。如果设置为 12 小时,则 "hh:mm" 给出 12 小时的时间。很奇怪。
【解决方案3】:
+(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]];
}

【讨论】:

    【解决方案4】:
    let datePicker = UIDatePicker()
    datePicker.datePickerMode = UIDatePickerMode.time 
    datePicker.locale = Locale.init(identifier: "NL")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2016-11-15
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多