2016-05-12 4 views
0

@"2016-05-12T16:25:55.000Z"のような文字列から時刻を取得しようとしています。パース時間NSDateから

NSDateFormatter *formatter = [NSDateFormatter new]; 
formatter.dateFormat  = @"HH:mm"; 
formatter.timeZone   = [NSTimeZone systemTimeZone]; 

NSDate *serverDate = [formatter dateFromString:dateString]; 
NSString* time = [formatter stringFromDate:serverDate]; 
NSLog(@"Time: %@", time); 

をしかし、私のserverDatenullを返して:私はこのような何かを試してみました。私は何が間違っているのか分かりません。

答えて

2

NSStringからNSDateを作成する場合、日付形式は文字列全体と完全に一致する必要があります。

しかし、あなたの目標は文字列として時間を取得することです。したがって、部分文字列を取得するだけです。

NSString *time = [dateString substringWithRange:NSMakeRange(11, 5)]; 

もちろん、これはどのような方法でもタイムゾーンを処理しません。元の文字列をNSDateに解析し、その日付から時刻を取得する場合は、すべて必要なタイムゾーンの調整が必要です.2つの日付形式が必要です。元の文字列をNSDateと2番目の文字列(すでに所有しているもの)にパースして、新しい文字列を目的の出力(この場合は時刻)で生成します。

+0

ありがとうございます。あなたの組み合わせたアプローチは非常にうまくいった。 – BlackHatSamurai

0

フォーマッタのdateFormatプロパティを@"yyyy-MM-dd'T'HH:mm:ssZ"に設定し、NSDateComponentsを使用して時刻値を取得できます。

+0

あなたの形式は質問の文字列と一致しません。 – rmaddy

0

まずここで

+ (NSString *) GetFormattedTimeStringForGivenDate:(NSDate *) date 
{ 
    NSString *retStr = nil; 
    NSDate *now = date; 
    NSDateFormatter *dateFormatterDateOnly = nil; 
    NSDateFormatter *dateFormatterTimeOnly = nil; 

    if (dateFormatterDateOnly == nil) { 
     dateFormatterDateOnly = [[NSDateFormatter alloc] init]; 
     [dateFormatterDateOnly setDateFormat:@"MM/dd/yyyy"]; 
    } 
    if (dateFormatterTimeOnly == nil) { 
     dateFormatterTimeOnly = [[NSDateFormatter alloc] init]; 
     [dateFormatterTimeOnly setDateFormat:@"hh:mm:ss:a"]; 
    } 
    //if you need date use this 
    //retStr = [NSString stringWithFormat:@"%@", [dateFormatterDateOnly stringFromDate:now]]; 
    retStr = [NSString stringWithFormat:@"%@", [dateFormatterTimeOnly stringFromDate:now]]; 
    return retStr; 
} 

日時

分割するNSDate変数を使用NSDate

+ (NSDate *) convertDateToNSDateWithGivenFormat: (NSString *) dateStr Format:(NSString*) format 
{ 
    NSDateFormatter *dateFormatterDate = nil; 
    NSDate *dateonly = nil; 

    if (dateFormatterDate == nil) { 
     dateFormatterDate = [[NSDateFormatter alloc] init]; 
     [dateFormatterDate setDateFormat:format]; 
    } 
    dateonly = [dateFormatterDate dateFromString:[NSString stringWithFormat:@"%@", dateStr]]; 

    return dateonly; 
} 

にあなたの日付を変換するには、一例です。フォーマットは必要に応じて変更できます:

NSDate *myDt = [MyClass convertDateToNSDateWithGivenFormat: @"2016-05-12T16:25:55" Format:@"yyyy-MM-dd'T'HH:mm:ss"]; 
    NSString *str = [MyClass GetFormattedTimeForGivenDate:myDt]; 
関連する問題