2011-06-27 72 views
0

我想看看什麼是獲得存儲在NSDate回來了,所以我用NSLog,但它顯示(null),而如果我打印字符串stf2,它顯示了應有的價值。打印時遇到問題的NSDate從格式化

  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

請編輯您的問題,以顯示stf2'的'內容。 –

+1

你能告訴你如何配置你的格式化器嗎? –

+1

請_show'stf2'_的內容。記錄時如何顯示? –

回答

1

您需要通過設置適當的日期格式化程序來更正dateformatter。首先這樣做

[formatter setDateFormat:@"yyyy-dd-MM"]; 

//它應該是你的字符串的方式。就像如果你的字符串是2011-Jun- 27然後fromatter應該

[formatter setDateFormat:@"yyyy-MM-dd"]; 

設定的格式,按您的字符串的日期格式。然後從這一行取回日期

NSDate *date_ = [formatter dateFromString:stf2]; 
0

假設 「STF2」 是你的字符串,那麼也許你的對象格式化爲零。

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; 
} 

希望你能得到答案。

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_);