時間に興味がない場合は無視できますか?つまり、このような日付文字列があります@"2012-12-19T14:00:00"
が、日付(2012-12-19)の取得にのみ関心がありますが、このNSDateFormatter
ように設定[dateFormatter setDateFormat:@"yyyy-MM-dd"];
すると、nilが返されますNSDate
。
質問する
2018 次
2 に答える
3
NSDate オブジェクトは、ある時点を表しているため、常に時間コンポーネントも含みます。この観点からすると、NSDate という名前は誤解を招くものであると主張できます。
文字列から日付を作成するための日付フォーマッターを作成し、時刻を開始時刻に設定し、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
スタイルによって選択される形式は、環境のロケールに依存します。
于 2012-11-19T13:18:38.663 に答える
-2
すべての日付文字列は、日付に対して10文字を返します。つまり、今日の日付は2012-11-19になります。
日付を簡単に部分文字列にして、必要に応じて使用できます。
例 :
NSString* newDate = @"";
newDate = [[NSDate date]substringToIndex:10];
出力は次のようになります:2012-11-19
于 2012-11-19T13:02:36.597 に答える