将字符串转换为NSDate

时间:2013-08-19 18:48:50

标签: objective-c cocoa-touch nsdate

我正在尝试使用NSDateFormatter将以下字符串转换为NSDate: 2013-08-19 7:00 AM

但是,创建了以下NSDate:2013-08-19 04:00:00 +0000。时间错了。

我的代码如下。我不知道我做错了什么。

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"];
NSString *string = @"2013-08-19 7:00 AM";
NSDate *dateFromString = [dateFormatter dateFromString:string];

2 个答案:

答案 0 :(得分:4)

您尝试使用24小时格式表示一个AM / PM指示符,而这只是不起作用。改变你的行:

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"];

到此:

[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"];

并且您会发现您的代码现在可以使用。

答案 1 :(得分:-2)

你看到" + 0000"表示操作系统正在将您的时间字符串转换为UTC。要解决此问题,您只需设置本地时区。

dateFormatter.timeZone = YOUR_LOCAL_TIMEZONE;

另外,要在本地设置中打印日期,可以使用NSDateFormatter

localizedStringFromDate:dateStyle:timeStyle:

希望这有帮助!