時間に興味がない場合は無視できますか?つまり、次のような日付文字列があります @"2012-12-19T14:00:00"
しかし、私は日付(2012-12-19)を取得することにのみ興味がありますが、設定した場合 NSDateFormatter
好きな [dateFormatter setDateFormat:@"yyyy-MM-dd"];
それは私にnilを返します NSDate
.
回答:
回答№1の場合は3NSDateオブジェクトには、ある時点を表すため、常に時間コンポーネントも含まれます。この観点から、NSDateという名前は誤解を招く可能性があります。
文字列から日付を作成するための日付フォーマッタを作成し、時刻を1日の始まりに設定し、2番目の日付フォーマッタを使用して時刻コンポーネントなしで日付を出力する必要があります。
NSString *dateString = @"2012-12-19T14:00:00";
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd"T"HH:mm:ss"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateStyle:NSDateFormatterShortStyle];
[outputFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate *date = [inputFormatter dateFromString:dateString];
//this will set date"s time components to 00:00
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit
startDate:&date
interval:NULL
forDate:date];
NSString *outputString = [outputFormatter stringFromDate:date];
NSLog(@"%@", outputString);
結果は
19.12.12
一方、フォーマットは、スタイリングによって選択されるため、環境のロケールによって異なります。
回答№2の場合は-1
すべての日付文字列は日付に対して10文字を返します。つまり、今日の日付は2012-11-19になります。
日付を簡単に部分文字列にして、必要に応じて使用できます。
例:
NSString* newDate = @"";
newDate = [[NSDate date]substringToIndex:10];
出力は次のようになります: 2012-11-19