我正在使用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;
}
答案 0 :(得分:3)
问题在这里
NSDate *dateFromString = [newDateFormatter dateFromString:dateString];
此处dateString
为2014-12-11 03:41:31
,因此未进行格式化。您应该更改newDateFormatter
或DateFormatter
以根据您的要求进行转换。
编辑:
将[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];
}