从NSString到NSDate的转换不起作用

时间:2013-04-09 13:58:36

标签: iphone ios objective-c xcode

我必须将此NSString:“12/13/1980”转换为NSDate对象。 我使用这样的代码:

NSString *birthday = @"12/13/1980"
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSDate *date = [dateFormat dateFromString:dateString];

但结果如下:“1980-12-12 23:00:00 +0000” 为什么?我想要相同的格式和相同的日期。 非常感谢你。

3 个答案:

答案 0 :(得分:2)

[dateFormat dateFromString:dateString]方法生成一个NSDate对象,表示单个时间点。

当你NSLog日期对象时,它正在打印NSDate对象的系统表示。我假设你的语言环境是GMT + 1 ..所以NSLog打印12/12/1980 23:00。

如果要打印日期对象,请使用格式化程序执行[dateFormat stringFromDate:date];

答案 1 :(得分:1)

格式取决于本地化,还可以选择设置日期/时间是短格式,中格格式还是长格式 - 我相信短片是您正在寻找的:

[dateFormatter setDateStyle:NSDateFormatterShortStyle];  
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

答案 2 :(得分:1)

这是因为NSDate对象总是有时间和时区,所以如果你没有在你想要转换的字符串中指定IOS将使用你的本地时区然后猜测时间,这种情况将是UTC 0中的23:00