【问题标题】:ios date time in am pm date formatter issue上午下午日期格式化程序问题中的ios日期时间
【发布时间】:2014-02-25 12:29:05
【问题描述】:

我正在尝试将日期字符串从数据库更改为日期(mm.dd.yy)和时间(am pm)。 这样我就可以从 sqlite 获取日期时间:

rs=[db executeQuery:@"select *,strftime('%m.%d.%Y %H:%M',update_date) AS DATETIME from sales_order where deleted=0 and status=1 and customer_id=?  order by order_id desc",custId];

我得到日期时间字符串:

        NSString *dateTimeString = [rs stringForColumn:@"DATETIME"];//from nslog 02.25.2014 14:41

然后我启动日期格式化程序并获取日期:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[self getCurrentLocale]];

    [dateFormatter setDateFormat:@"mm dd YY hh:mm a"];//it is nil,i am stuck here also tried with mm.dd.YY hh:mm a
    NSDate *date = [dateFormatter dateFromString:dateTimeString];

任何建议 谢谢

【问题讨论】:

  • 你有多个“.”在 NSLog 显示的日期字符串中。但它们不会出现在您的dateFormat 中。另外还有两个“mm”,月份和分钟,一个应该是大写的。如果我记得很清楚(没试过),你应该使用类似的东西:MM'.'dd'.'YY hh:mm a。
  • 你的问题解决了吗?

标签: iphone ipad nsdate nsdateformatter


【解决方案1】:

我尝试了以下代码:-

    NSString *dateStr = @"02.25.2014 14:41";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[NSLocale currentLocale]];

    [dateFormatter setDateFormat:@"MM.dd.yyyy HH:mm"];
    NSDate *date = [dateFormatter dateFromString:dateStr];
    NSLog(@"date = %@",date);

我得到了以下输出日志:-

date = 2014-02-25 09:11:00 +0000

告诉我,不管有没有用。

【讨论】:

    【解决方案2】:

    为什么不使用NSDataDetector。


    无论您不确定(或不关心)字符串中包含的日期格式,使用 NSDataDetector 解析日期。

    NSString *dateString = @"Wed, 03 Jul 2013 02:16:02 -0700";
    __block NSDate *detectedDate;
    
    //Detect.
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
    [detector enumerateMatchesInString:dateString
                               options:kNilOptions
                                 range:NSMakeRange(0, [dateString length])
                            usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
    { detectedDate = result.date; }];
    

    为此做了一个 NSString 扩展。

    // Simple as this.   
    date = dateString.dateValue;
    

    感谢NSDataDetector,它可以识别很多格式。

    '2014-01-16' dateValue is <2014-01-16 11:00:00 +0000>
    '2014.01.16' dateValue is <2014-01-16 11:00:00 +0000>
    '2014/01/16' dateValue is <2014-01-16 11:00:00 +0000>
    '2014 Jan 16' dateValue is <2014-01-16 11:00:00 +0000>
    '2014 Jan 16th' dateValue is <2014-01-16 11:00:00 +0000>
    '20140116' dateValue is <2014-01-16 11:00:00 +0000>
    '01-16-2014' dateValue is <2014-01-16 11:00:00 +0000>
    '01.16.2014' dateValue is <2014-01-16 11:00:00 +0000>
    '01/16/2014' dateValue is <2014-01-16 11:00:00 +0000>
    '16 January 2014' dateValue is <2014-01-16 11:00:00 +0000>
    '01-16-2014 17:05:05' dateValue is <2014-01-16 16:05:05 +0000>
    '01-16-2014 T 17:05:05 UTC' dateValue is <2014-01-16 17:05:05 +0000>
    '17:05, 1 January 2014 (UTC)' dateValue is <2014-01-01 16:05:00 +0000>
    

    eppz!kit 的一部分,从 GitHub 获取类别 NSString+EPPZKit.h。

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 1970-01-01
      • 2014-07-08
      • 2015-11-22
      • 2011-09-08
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      相关资源
      最近更新 更多