0

日付 2010-11-29T00:00:00+05:30 の文字列があり、それをNSDate. 2010 年 11 月 29 日に変換したい。このために、私はこのようなことをしています..

NSDateFormatter *df = [[NSDateFormatter alloc] init];
textForLabel = @"2010-11-29T00:00:00+05:30";
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *myDate = [df dateFromString:textForLabel];
NSLog(@"date : %@",myDate);

しかし、出力はヌルです。

2010-11-29T00:00:00+05:30 の日付形式は何ですか?

ここで何が間違っているのかわかりません。

4

4 に答える 4

1

「+05:30」のタイムゾーン形式識別子がないため、最初にタイムゾーンのコロンを削除します。

textForLabel = [textForLabel
                stringByReplacingCharactersInRange:NSMakeRange(21,1)
                withString:@""];

次に、次の文字列が得られます。2010-11-29T00:00:00+0530

次の日付形式を使用できます。

[df setDateFormat:@"yyyy:MM:dd'T'HH:mm:sszzz"];

関連質問: iPhone NSDateFormatter タイムゾーン変換

于 2012-06-20T16:13:47.733 に答える
0

textForLabel = 2010-11-29T00:00:00+05:30

それは文字列ではありません。末尾のセミコロンがないため、コンパイルされるとは思えませんが、コンパイルされた場合、コンパイラはおそらくそれを式として解釈し、結果の数値を に割り当てtextForLabelます。文字列にするには、次のようにします。

textForLabel = @"2010-11-29T00:00:00+05:30";
于 2012-06-20T15:54:42.587 に答える
0

これを試して、

NSDateFormatter *df = [[NSDateFormatter alloc] init];
textForLabel = @"2010-11-29T00:00:00+05:30";
NSArray *components = [textForLabel componentsSeperatedByString:@"T"];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *myDate = [df dateFromString:[components objectAtIndex:0]];
NSLog(@"date : %@",myDate);

これは望ましい方法ではありませんが、機能します:)

于 2012-06-20T15:55:49.340 に答える
0
-(NSDate *) getDateFor :(NSString *)ICSDateString
{
    int strLen = [ICSDateString length];    
    NSString * subString1 = [ICSDateString substringWithRange:NSMakeRange(0, strLen - 1)];
    NSLog(@"%d  %d subString1 %@", strLen, subString1.length, subString1);
    NSDateFormatter* df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyyMMdd'T'HHmmss'Z'"];
    [df setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];

    NSDate* parsedDate = [df dateFromString:subString1];

    [df release];
    NSLog(@"parsedDate %@", parsedDate);
    return parsedDate;
}

これは、ICS 形式の日付から NSDate を取得する正しい方法です。このリンクを参照してください。ありがとう。

于 2012-06-21T04:10:38.170 に答える