我正在尝试使用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];
答案 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:
希望这有帮助!