/ / Objective-C – NSDateFormatter dateFromStringは時間を無視します-objective-c、cocoa、nsdateformatter

Objective-C - NSDateFormatterのdateFromStringは時間を無視する - objective-c、cocoa、nsdateformatter

時間に興味がない場合は無視できますか?つまり、次のような日付文字列があります @"2012-12-19T14:00:00" しかし、私は日付(2012-12-19)を取得することにのみ興味がありますが、設定した場合 NSDateFormatter 好きな [dateFormatter setDateFormat:@"yyyy-MM-dd"]; それは私にnilを返します NSDate.

回答:

回答№1の場合は3

NSDateオブジェクトには、ある時点を表すため、常に時間コンポーネントも含まれます。この観点から、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