0

NSDateFormatterを使用していますが、datefromStringは1年オフです。

NSString *date    = [[command substringWithRange:NSMakeRange(pos.location + 3, command.length - pos.location - 9)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

NSLog(@"  date        [%@]   " , date       ); 
NSLog(@"  lastAccess  [%@]   " , lastAccess );
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss Z"]; 
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]]; 
NSDate *filedate = [dateFormat dateFromString:date];

NSLog(@"1     %@   %f  " , filedate    , [filedate   timeIntervalSince1970]); 
NSLog(@"2     %@   %f  " , lastAccess  , [lastAccess timeIntervalSince1970]); 
NSLog(@"3     %@   " , date);

次の出力を生成します

  date        [2012-11-18 19:00:23 +0000]   
  lastAccess  [2012-11-18 19:00:21 +0000]   
  1     2011-11-18 19:00:23 +0000   1321642823.000000  
  2     2012-11-18 19:00:21 +0000   1353265221.929860  
  3     2012-11-18 19:00:23 +0000   

日付は2012年であり、3)で再度確認されます。

ただし、1)2011年がまだ1)filedate datefromstringofdateを確認してください。

何か案は ?

前もって感謝します

4

1 に答える 1

2

年には小文字を使用します。

日付形式はyyyy-MM-dd HH:mm:ss Z

Unicode日付フォーマットガイドによると

  • yyyyは年を意味します
  • YYYYは、「WeekofYear」ベースのカレンダーでYearを意味します。

なぜこれが異なる結果をもたらすのかはわかりませんが、ほとんどの場合、小文字のバリアントを使用する必要があります。

于 2012-11-19T14:43:16.010 に答える