【问题标题】:NSDate is coming nil while converting a date string having 12 hour format to NSDate if iPhone/iPad is in 24 hour format [duplicate]如果 iPhone/iPad 是 24 小时格式,则 NSDate 在将具有 12 小时格式的日期字符串转换为 NSDate 时为零 [重复]
【发布时间】:2014-04-16 13:41:02
【问题描述】:

在我的应用程序中,客户的要求是以 12 小时格式显示时间。如果我的设备不是 24 小时格式,一切正常。但是如果我将设备时间格式更改为 24 小时格式,mydate 将为零。这是我的代码。

NSString *timeStr=@"12-02-2012 11:12 PM";
NSDateFormatter *dtf = [[NSDateFormatter alloc] init];
[dtf setDateFormat:@"dd-MM-yyyy hh:mm a"];
NSDate *myDate=[dtf dateFromString:timeStr];

请提供解决方案。我正在通过获取 mydate 来验证 datePicker 的日期,但我的应用由于 nil 值而崩溃。提前致谢。

【问题讨论】:

  • 24 小时制怎么会有上午/下午。在[dtf setDateFormat:@"dd-MM-yyyy hh:mm a"];中删除a
  • 在我的应用程序中,我从服务器获取时间并将其转换为 12 小时格式并将其显示在标签中。我只想将具有 12 小时格式的日期字符串(标签文本)转换为NSDate。但我得到 nil,如果设备是 24 小时格式。如果设备是 12 小时格式,我可以将其转换为 NSDate..
  • MKR ,我的日期字符串,即 timeStr 是 12 小时格式,而不是 24 小时格式。如果我删除 [dtf setDateFormat:@"dd-MM-yyyy hh:mm a"] 中的 a,格式化程序如何知道日期字符串是 12 小时格式?
  • 在设置 dateFormat 之前设置语言环境:dtf.locale = NSLocale.systemLocale;

标签: objective-c ios7 nsdate nsdateformatter


【解决方案1】:

我通过为格式化程序设置区域设置得到了我的解决方案,如果设备是 24 小时格式,我得到了 NSDate。这是代码。

 NSString *timeStr=@"12-02-2012 11:12 PM";
    NSDateFormatter *dtf = [[NSDateFormatter alloc] init];
    [dtf setDateFormat:@"dd-MM-yyyy hh:mm a"];
    [dtf setFormatterBehavior:NSDateFormatterBehaviorDefault];
    NSDate *datens= [[NSDate alloc]init];
    NSLocale *curentLocale = [NSLocale currentLocale];
    [dtf setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[curentLocale localeIdentifier]]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2019-12-24
    相关资源
    最近更新 更多