2012-01-03 9 views
1

私のアプリでは、Webサービスからデータを取得しています。データはXML形式で提供され、パーサを使用して必要なデータを解析して取得します。iOSで異なるフォーマットの日付を解析する

結果の1つでは、2011年12月14日に日付が取得されます。ただし、2011-14-12として日付を表示したいとします。ここで

は、私が使用するコード..です

NSDate *endDate = [CommonHelper getDateFromString:[NSString stringWithString:elementValue] :@"dd-MMM-yyyy HH:mm:ss"]; 

+ (NSDate *) getDateFromString: (NSString *) dateStr: (NSString *) format 
{ 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:format]; 
    NSDate *newDate = [dateFormat dateFromString:dateStr]; 
    [dateFormat release]; 

    return newDate; 
} 

誰かが、私はこれを行うことができる方法で私を助けることができるだろうか?

+0

使用NSDateFormatterへNSDateオブジェクトを変換するために、再度NSDateFormatterを使用し、その後、NSDateオブジェクトに日付文字列を変換します希望のフォーマット。 –

+0

返信ありがとうございます..私はNSDateにその日付を変換しようとしました..しかし、それは正しく値を取得する原因を正しく変換していないようです... – learner2010

+0

あなたは "14 DEC 2011" "dd MMM yyyy"という書式を試してみてください。また、ロケールを設定することをお勧めします。そうでない場合、解析はユーザーのローカル設定に依存する場合があります。 – seppo0010

答えて

1

日付文字列を解析し、あなたが説明するように、日付オブジェクトをフォーマットするため、これらのメソッドを使用します。

+ (NSDate *)parseDate:(NSString *)dateString { 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"dd MMM yyyy"]; 
    NSDate *newDate = [dateFormat dateFromString:dateString]; 
    [dateFormat release]; 

    return newDate; 
} 

+ (NSString *)formatDate:(NSDate *)date { 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-dd-MM"]; 
    NSString *dateString = [dateFormat stringFromDate:date]; 
    [dateFormat release]; 

    return dateString; 
} 
+1

seppo0010が示唆するように、[常にロケールを設定する](http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with-the-nsdateformater-locale-feature) 。 –

関連する問題