iPhone中的字符串到日期转换

时间:2012-05-09 11:50:13

标签: iphone nsdate nsdateformatter

我从这里开始参考前面的例子。但仍然存在空值问题。

字符串值为:==> strDate =“09-05-2012 00:00:00”

我希望输出为:==> 2012年5月9日

我的代码:

NSString *strDateFormat;//[strDate substringWithRange:NSMakeRange(0, 10)];
strDateFormat = [NSString stringWithFormat:@"%@", strDate];

NSDateFormatter *df = [[NSDateFormatter alloc] init];

NSDate *disDate = [df dateFromString:strDateFormat];
[df setDateFormat:@"MMM dd, yyyy"];

strDateFormat = [df stringFromDate:disDate];

lblDate.text = [NSString stringWithFormat:@"%@", strDateFormat];

[df release];

它给出(null)值。因为disDate具有(null)值。

为什么disDate设为nil ..? 任何解决方案..?

4 个答案:

答案 0 :(得分:2)

-(NSString*)getStringWithFormat:(NSString*)pStrDate fromFormat:(NSString*)pFromFormat toFormat:(NSString*)pToFormat
{
    NSDateFormatter *dtFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dtFormatter setDateFormat:pFromFormat];
    NSDate *fromFormatDate = [dtFormatter dateFromString:pStrDate];
    [dtFormatter setDateFormat:pToFormat];
    return [dtFormatter stringFromDate:fromFormatDate];
}

并像这样称呼它

NSString *strDate = [self getStringWithFormat:@"09-05-2012 00:00:00" fromFormat:@"dd-MM-yyyy HH:MM:SS" toFormat:@"MMM dd, yyyy"];

这是常用功能,您可以将它用于任何格式,只需要在参数中传递该格式。

答案 1 :(得分:2)

你必须告诉格式化程序在读取字符串时期望的格式。

NSString *string = @"09-05-2012 00:00:00";
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:string];
[formatter setDateFormat:@"MMM dd, yyyy"];
NSString *formattedString = [formatter stringFromDate:date];

答案 2 :(得分:0)

您尚未设置格式化模式

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setFormatterBehavior:NSDateFormatterBehavior10_4];
    [df setDateFormat:@"MMM dd, yyyy"];
    NSDate *convertedDate = [df dateFromString:origDate];
    [df release];

答案 3 :(得分:0)

NSString *strDateFormat; //[strDate substringWithRange:NSMakeRange(0, 10)];

strDateFormat = [NSString stringWithFormat:@"%@", strDate];

NSDateFormatter *df = [[NSDateFormatter alloc] init];

[df setDateFormat:@"MMM dd, yyyy"];
 // ###### Set dateformat also here according to strDateFormat 

NSDate *disDate = [df dateFromString:strDateFormat];

[df setDateFormat:@"MMM dd, yyyy"];

strDateFormat = [df stringFromDate:disDate];

lblDate.text = [NSString stringWithFormat:@"%@", strDateFormat];

[df release];