如何在" dd / MM / yyyy"中获得NSDate合成ios?

时间:2014-12-11 10:06:32

标签: ios objective-c iphone nsdate nsdateformatter

我正在使用NSDate我创建了一个函数,它以“dd / MM / yyyy”格式给出今日日期,但NSDate始终显示“nil”值。我google了很多,也看到了很多stackoverflow的答案,但所有答案都返回NSString值而不是NSDate值所以请指导我以给定的格式获得NSDate。

+(NSDate*)getCurrentDate{
     NSDateFormatter *DateFormatter=[[NSDateFormatter alloc] init];
     [DateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];

     //Date print here
     NSLog(@"Utility CurrentDate: %@",[DateFormatter stringFromDate:[NSDate date]]);    
     NSString *dateString = [DateFormatter stringFromDate:[NSDate date]];
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

     NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc]init];
     [newDateFormatter setDateFormat:DATE_FORMAT];
     //Date print here
     NSLog(@"New Date: %@",[newDateFormatter stringFromDate:[NSDate date]]);
     NSDate *dateFromString = [newDateFormatter dateFromString:dateString];

     return dateFromString;

}

4 个答案:

答案 0 :(得分:3)

问题在这里

NSDate *dateFromString = [newDateFormatter dateFromString:dateString];

此处dateString2014-12-11 03:41:31,因此未进行格式化。您应该更改newDateFormatterDateFormatter以根据您的要求进行转换。

编辑:

[DateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];替换为[DateFormatter setDateFormat: DATE_FORMAT];

但是,由于您要返回NSDate对象,因此您的返回日期将不会达到所需的状态。你应该返回一个格式化的字符串。

答案 1 :(得分:2)

你完全误解了NSDate是什么和做了什么。 NSDate是一个绝对的时间点。它没有格式。它不能有格式。绝对不可能在" dd / MM / yyyy"中使用NSDate。格式或任何其他格式。

如果要向用户显示日期,可以使用NSDateFormatter将NSDate转换为字符串。你喜欢的任何格式。

答案 2 :(得分:1)

点击此处Convert date from string或您可以使用此方法进行转换。

这三个函数可用于格式化日期值..

-(NSString*)getStringFromDate:(NSDate*)pDate withFormat:(NSString*)pDateFormat{
NSDateFormatter *dtFormatter = [[NSDateFormatter alloc] init];
[dtFormatter setDateFormat:pDateFormat];
[dtFormatter setLocale:[NSLocale systemLocale]];
return [dtFormatter stringFromDate:pDate];}

-(NSDate*)getDateFromString:(NSString*)pStrDate withFormat:(NSString*)pDateFormat{
NSDateFormatter *dtFormatter = [[NSDateFormatter alloc] init];
[dtFormatter setDateFormat:pDateFormat];
[dtFormatter setLocale:[NSLocale systemLocale]];
return [dtFormatter dateFromString:pStrDate];}

-(NSString*)dateStringFromString:(NSString *)dateToConver format:(NSString *)fromFormat toFormat:(NSString *)toFormat{
NSDate *date = [Helper getDateFromString:dateToConver withFormat:fromFormat];
return [Helper getStringFromDate:date withFormat:toFormat];}

答案 3 :(得分:0)

请参阅dd/MM/yyyy format中的以下修改方法: -

+(NSString*)getCurrentDate{
    NSDateFormatter *format=[[NSDateFormatter alloc]init];
    [format setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
    NSString *currentDt=[format stringFromDate:[NSDate date]];
    NSDate *dt=[format dateFromString:currentDt];
    [format setDateFormat:@"dd/MM/yyy"];
    return [format stringFromDate:dt];
}