首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定我收到了哪种日期格式?

如何确定我收到了哪种日期格式?
EN

Stack Overflow用户
提问于 2013-07-19 23:55:02
回答 2查看 128关注 0票数 5

在处理从不同客户机发送的各种各样的JSON数据时,数据格式标准化是一个真正的问题。

我可能会得到其中的任何一个: 2013-10-05

2-6-13

2013年7月13日星期一

有时会有小时、分钟和秒以及时区信息。对于每个客户端,我必须手动设置一个NSDateFormatter,或者如果无法解析它,我会进行子字符串搜索。我真正想做的是将所有这些合并到一个方法中,并以某种方式确定我处理的是哪种类型。然后使用某种类型的switch语句来处理该特定日期的解析。

我无法更改它们的格式,但我如何才能更好地处理它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 01:09:27

好的,谢谢你的评论。我最终做的是去http://waracle.net/iphone-nsdateformatter-date-formatting-table/,非常仔细地研究所有的NSDateFormatter选项。特别是RSS帖子末尾的+0000时区把我的格式转换搞得一团糟。RSS日期与RFC822匹配,这意味着您需要在末尾使用三个Z才能正确地捕获它。

我正在尝试像+ZZZZ这样的东西,它们在字符串上失败了。这就是我之前修剪弦的原因。最终起作用的是:

@"Wed,17 Jul 2013 03:23:18 +0000“

需要以下格式化程序:

@"EEE,dd MMM yyyy HH:mm:ss ZZZ“

在为这种情况正确地设置了DateFormatter之后,我可以很容易地为其他格式找出其他格式。原来项目中只使用了3种不同的日期格式,我可以很容易地将正确的日期格式字符串与每个数据源一起存储,并在需要时将其插入到日期格式化程序中。不再需要字符串搜索,所有数据都会干净地转换为正确的NSDate。

因此,答案是,创建一个可转换各种日期格式的示例项目,插入所需的日期格式,并正确使用DateFormatter代码。你的日期问题可能并不像你想象的那么糟糕,更好地理解它们可以让代码变得更干净。

使用下面的示例,如果格式字符串不正确,您将看到(null)。

代码语言:javascript
复制
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSArray *dateStrings = @[
             // From data source 1.
            @[@"2012-04-18",@"yyyy-MM-dd"],
            //  From data source 2.
            @[@"2012-04-19 18:29:35",@"yyyy-MM-dd HH:mm:ss"],
            @[@"2011-05-04 11:10:50",@"yyyy-MM-dd HH:mm:ss"],
            // From RSS feeds (pubDate)
            @[@"Wed, 17 Jul 2013 02:24:23 +0000",@"EEE, dd MMM yyyy HH:mm:ss ZZZ"],
            @[@"Tue, 25 Jun 2013 15:04:49 +0000",@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]
                                 ];
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        for(NSArray *datePair in dateStrings){
            [formatter setDateFormat:datePair[1]];
            NSDate *thisDate = [formatter dateFromString:datePair[0]];
            [formatter setDateStyle:NSDateFormatterMediumStyle];
            NSLog(@"%@ = %@",datePair[0],[formatter stringFromDate:thisDate]);
        }

    }
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2013-07-20 00:50:19

这不是你问题的确切答案,但是当我想要解析日期而不确定格式时,我通常只为日期设置NSDataDetector。检测器通常会检测多种语言的日期,并一次性格式化所有日期。它相当整洁。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17750447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档