将NSString转换为NSDate并返回到不同格式的NSString

时间:2013-11-23 04:13:57

标签: ios objective-c nsstring nsdate nsdateformatter

我需要使用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];

然而,日期一直无效。

3 个答案:

答案 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