2

グラフに時間を表示しようとしていますが、この@"2012-08-2818:50:24"形式のフルタイムスタンプがあります。この日付から時間を取得しようとすると、NSDateでnilが返されます。

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss"];
    NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];

このコードでは、 [formatter setDateFormat:@"HH:mm:ss"];行を に変更した場合にのみ[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];、完全な日付と時刻で動作を開始します。しかし、私は時間だけが必要です

4

6 に答える 6

4

あなたは文字列を持っています。そのため、文字列形式に従って最初に日付に変換する必要があります。その後、日付を任意の形式に変換できます。だからこれに従ってください。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *str = [formatter stringfromdate:time];
NSLog(@"%@",str);
于 2012-10-04T06:52:39.993 に答える
2
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"hh:mm:ss  a"];
NSString *theTime = [timeFormat stringFromDate:[NSDate date]];    
NSLog(@"time, %@",theTime);
于 2012-10-04T07:04:31.753 に答える
2

NSDateFormatter は、NSDate を要件に合わせてフォーマットするために使用されます。ここでは、文字列から日付を取得しているため、NSDateFormatter にその形式の文字列を探して日付に変換するように指示する必要があります。

NSDate には日付と時刻の両方が含まれているため、時刻のみを表示する場合は、dateformatter を使用して NSDate から時刻コンポーネントを取得します

iOS は NSDate で時刻と日付を一緒に管理します。

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];   
   // GET  Proper NSDate 
    NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];        
    //To your requirement
    [formatter setDateFormat:@"HH:mm:ss"];
    NSString *timestr=[formatter stringFromDate:time];
    NSLog(@"%@",timestr);
于 2012-10-04T06:49:24.710 に答える
2

NSDate最初に、文字列を正しい形式に変換する必要があるためです。

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *aDate = [formatter dateFromString:@"2012-08-28 18:50:24"];

これで、必要に応じて を再フォーマットできNSDateFormatterます。今、あなたはから時間を得ることができます

[formatter setDateFormat:@"HH:mm:ss"];
NSString *newDate = [dateFormatter stringFromDate:aDate];
于 2012-10-04T06:49:44.647 に答える
2

文字列から日付を生成する必要がある場合は、それに応じて日付形式を設定する必要があります。

これは、最初に NSDate オブジェクトを作成することが重要です! そうして初めて、時間を全体の日付から分離できます。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];

それから

[formatter setDateFormat:@"HH:mm:ss"];
NSString *timeStr = [formatter stringFromDate:time];

このように、他の文字列連結関数を使用して日付モジュールを削除することもできます

ただし、最初に NSDate がある場合は、以前のコードが機能します。

NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *timeStr = [formatter stringFromDate:date];
于 2012-10-04T06:49:55.070 に答える
1

最初に、文字列の日付と時刻を日付形式に変換しました..

YourTimeStr = @"2012-08-28 18:50:24";  

  NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-mm-dd HH:mm:ss";
    NSDate *DateAndTime = [formatter dateFromString:LogOutTimeSTR];

それから

NSDateFormatter *dateFormatter1 = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter1 setDateFormat:@"HH:mm:ss"];
    [dateFormatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

    NSString *YourTimeStr =[dateFormatter1 stringFromDate:DateAndTime];
于 2012-10-04T06:51:44.740 に答える