0

我必须将此 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” 为什么?我想要相同的格式和相同的日期。非常感谢你。

4

3 回答 3

2

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

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

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

于 2013-04-09T14:20:08.613 回答
1

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

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

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

于 2013-04-09T14:01:09.030 回答
1

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

于 2013-04-09T14:14:25.587 回答