1

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

4

2 に答える 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 に答える