首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDate来自NSDateFormatter

NSDate来自NSDateFormatter
EN

Stack Overflow用户
提问于 2015-08-25 16:48:34
回答 3查看 101关注 0票数 1

我正在测试一些dateFormatter,我有一个简单的问题

代码语言:javascript
复制
formatter :

- (void)testDate {

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd/MM/yyyy"];
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
    [dateFormatter setLocale:locale];
    NSString *stringDate = @"23/03/1";
    NSDate *date = [dateFormatter dateFromString:stringDate];
    XCTAssertTrue(date == nil);
}

我的测试是红色的,因为日期不是零。当我打印日期时:

代码语言:javascript
复制
(lldb) po date
0001-03-22 23:50:39 +0000

NSDateFormatter正在填充日期字符串(1->0001),.I不需要这个填充。您认为这是NSDateFormatter的正确行为吗?(这是NSDateFormatter类中的一个bug吗?)我怎么才能避免这种情况?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-26 06:26:49

我不认为有一个很好的答案,为什么@"23/03/1"被认为是一个有效的日期与格式的@"dd/MM/yyyy"。这就是它的工作原理。但是,如果您想测试它是否为##/##/####格式,您可以这样做:

代码语言:javascript
复制
NSRange range = [stringDate rangeOfString:@"^\\d{2}/\\d{2}/\\d{4}$" options:NSRegularExpressionSearch];
XCTAssert(range.location == NSNotFound, @"Not in ##/##/#### format");

显然,您必须将其与NSDateFormatter测试结合起来,以确保这些值也是合理的,但上面将测试数字的数量。

票数 1
EN

Stack Overflow用户

发布于 2015-08-25 17:22:36

日期格式化程序仅用于将字符串日期解析为NSDate

lldb po命令只是根据一些苹果开发人员认为很好的内容来格式化日期,它仅用于调试。内部NSDate使用一种专有格式,我们认为这是自2001年1月1日格林尼治标准时间第一时间以来的秒数。

您需要的是使用日期格式化程序将日期格式化为所需的字符串格式。

使用问句代码中的格式字符串的示例代码:

代码语言:javascript
复制
NSString *dateString = [dateFormatter stringFromDate:date];
NSLog(@"dateString: %@", dateString);

输出:

dateString: 23/03/1999

添加输出日期格式以满足您的需要。

票数 0
EN

Stack Overflow用户

发布于 2015-08-25 17:50:24

我猜想"dd/MM/yyyy“只是一种格式,当NSDateFormatter处理它时,将给定的日期解析为3个数字,并将其转换为date。所以"1“刚转到"0001”。

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

https://stackoverflow.com/questions/32209686

复制
相关文章

相似问题

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