-1

我正在尝试使用 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];
4

2 回答 2

4

您正在尝试使用 24 小时格式的小时数AM/PM 指示符,但这是行不通的。更改您的线路:

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

对此:

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

你会发现你的代码现在可以工作了。

于 2013-08-19T19:05:33.713 回答
-2

您看到“+0000”的原因意味着操作系统正在将您的时间字符串转换为 UTC。要解决这个问题,您只需设置当地时区。

dateFormatter.timeZone = YOUR_LOCAL_TIMEZONE;

此外,要在本地设置中打印您的日期,您可以使用NSDateFormatter's:

localizedStringFromDate:dateStyle:timeStyle:

希望这可以帮助!

于 2013-08-19T18:56:45.020 回答