我想查看NSDate
中存储的内容,因此我使用NSLog
,但它显示(null)
,而如果我打印字符串stf2
,它显示了正确的价值。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd"];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
NSString *stf2 = [[pact.date componentsSeparatedByString:@" "] objectAtIndex:0];
NSLog(@"date %@",stf2);
NSDate *date_ = [formatter dateFromString:stf2];
pact.date = [formatter1 stringFromDate:date_];
NSLog(@"date %@",[NSDate date_]);
答案 0 :(得分:2)
您在问题中提出的代码中存在两个具体问题。
格式重置
首先,
[formatter setDateFormat:@"YYYY-MM-dd"];
然后初始化第二个格式化程序,然后重置第一个格式化程序的格式
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
强调
[formatter setDateFormat:@"MMM dd, yyyy"];
这应该是formatter1
,但是formatter
。
日期格式
如果你看一下你使用YYYY-MM-dd
的格式,它看起来很好。但明显的YYYY
有不同的目的,可能与我们通常的日历年不同。您应该使用小写y
代替。
[formatter setDateFormat:@"yyyy-MM-dd"];
我不认为你的意思是
NSLog(@"date %@",[NSDate date_]);
应该是
NSLog(@"date %@", date_);
答案 1 :(得分:1)
您需要通过设置正确的日期格式化程序来更正日期格式化程序。先做这个
[formatter setDateFormat:@"yyyy-dd-MM"];
//它应该像你的字符串一样。比如你的字符串是2011年6月27日,那么就应该
[formatter setDateFormat:@"yyyy-MM-dd"];
根据字符串的日期格式设置格式化程序。然后从这一行获取日期
NSDate *date_ = [formatter dateFromString:stf2];
答案 2 :(得分:0)
假设“stf2”是你的字符串,那么你的对象 formatter 可能是nil。
答案 3 :(得分:0)
以下功能对您有所帮助。
“getDateTimeFromString”将日期和时间作为参数,它将返回NSDate对象。\
-(NSDate *)getDateTimeFromString :(NSString *)tempDate :(NSString *)tempTime{
NSString *dateValue = [tempDate stringByAppendingFormat:@" %@",tempTime];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:dateValue];
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:date];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:date];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:date] autorelease];
return date;
}
“getDateStringFromDate”将NSDate作为参数,它将返回NSString。 所以,你可以NSLog那个价值。
-(NSString *)getDateStringFromDate :(NSDate *)dateValue{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setTimeStyle:NSDateFormatterShortStyle];
[timeFormat setDateFormat:@"HH:mm a"];
NSString *theDate = [dateFormat stringFromDate:dateValue];
/*NSLog(@"\n"
"theDate: |%@| \n"
"theTime: |%@| \n"
, theDate, theTime);*/
return theDate;
}
希望你能得到答案。