【问题标题】:NSDateFormatter dateFromString with format 'hh:mm a' return nilNSDateFormatter dateFromString 格式为 'hh:mm a' 返回 nil
【发布时间】:2016-01-19 11:45:59
【问题描述】:

我在我的 iPhone 应用程序中遇到了问题。

在我的应用程序中,我将时间字符串转换为日期

NSString *time = @"01:30 PM";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"hh:mm a"];
NSDate *date = [dateFormat dateFromString:time];

由于某种原因,date[dateFormat dateFromString:time] 之后总是为零。

谁能告诉我我做错了什么?

谢谢

【问题讨论】:

  • 不,它工作正常输出:2000-01-01 08:00:00 +0000
  • 你到底需要展示什么?
  • 我有几个格式为 hh:mm a 的时间字符串,我需要在它们之间进行比较,所以我想将它们转换为 NSDate 以进行比较
  • 您的语言环境是否设置为英语?

标签: ios objective-c iphone nsdate nsdateformatter


【解决方案1】:

我假设您的设备语言不是英语。在这种情况下,您需要设置日期格式化程序区域设置。试试这个代码。

NSString *time = @"01:30 PM";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"hh:mm a"];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

【讨论】:

  • 按照人员的要求,输出不是必需的格式(控制台输出:2000-01-01 08:00:00 +0000),与上述 cmets 中已经提供的格式相同
  • @user3414609 - 我看不出你的输出如何随着语言环境的使用而改变。因为我刚刚运行你的代码,有和没有语言环境输出是一样的。
  • @nikhil84 因为您的语言环境已经是英语,如果您尝试将设备更改为其他语言,那么您将得到 Nil。
【解决方案2】:

试试这个...

NSString *time = @"01:30 pm";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeStyle:NSDateFormatterShortStyle];
[dateFormat setDateFormat:@"hh:mm a"];
dateFormat.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];
NSDate *date = [dateFormat dateFromString:time];

NSLog(@"date %@",[dateFormat stringFromDate:date]);

【讨论】:

    【解决方案3】:
        NSString *dats1 = @"01:30:00 PM";
        NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init] ;
        [dateFormatter1 setDateStyle:NSDateFormatterMediumStyle];
        [dateFormatter1 setDateFormat:@"HH:mm:ss"];
        NSDate *date = [dateFormatter1 dateFromString:dats1];
        NSLog(@"date : %@", date);
    
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"hh:mm a"];
        NSLog(@"Current Date: %@", [formatter stringFromDate:date]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      相关资源
      最近更新 更多