我需要使用NSString 2012年12月4日,下午12:33并将其转换为分开月,日和年,这样我就可以拥有3个不同的12,04和2012字符串。
我认为我应该将NSString转换为NSDate,然后重新格式化日期以更改NSString,但是遇到了问题。
我有:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd, yyyy, hh:mm p"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:substring];
NSLog(@"Date%@", dateFromString);
[dateFormatter release];
然而,日期一直无效。
答案 0 :(得分:3)
我认为问题在于你的语言环境。
您应该尝试打印dateFormatter
格式化当前日期[NSDate new]
的方式。
它对我有用:
NSString* substring = @"Dec 12 2012 12:08 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setDateFormat:@"MMM d yyyy h:mm a"]; // not 'p' but 'a'
NSDate *dateFromString = [dateFormatter dateFromString:substring];
答案 1 :(得分:2)
转换
[dateFormatter setDateFormat:@"MMM dd, yyyy, hh:mm p"];
来,因为 MMM dd,yyyy,hh:mm p 不是有效的日期格式
[dateFormatter setDateFormat:@"MMM dd, yyyy, hh:mm a"];
并且
NSDate *dateFromString = [dateFormatter dateFromString:substring];
再次获取字符串
NSLog(@"%@",[dateFormatter stringFromDate:dateFromString]);
对我来说NSLog 2012年12月4日,下午12:33
答案 2 :(得分:1)
#import "NSString+Date.h"
@implementation NSString (Date)
+ (NSDate*)stringDateFromString:(NSString*)string;
{
NSString *dateString = @"01-02-2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];
return dateFromString;
}
+(NSString*)StringFromDate :(NSDate*)date;
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSString *stringDate = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@", stringDate);
return stringDate;
}
`@end