1

UTC形式の文字列日付があります。

「2012-11-20T05:23:02.34」

これにはUTCNSDateオブジェクトが必要です...そしてこの関数を実装しました。

+ (NSDate *)utcDateFromString:(NSString *)string withFormat:(NSString *)format {
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
    inputFormatter.timeZone =[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    [inputFormatter setDateFormat:format];
    NSDate *date = [inputFormatter dateFromString:string];
    [inputFormatter release];
    return date;
}

このように呼んだ...

NSDate* submittedDate =[NSDate utcDateFromString:submittedDateString withFormat:@"YYYY-MM-dd'T'HH:mm:ss.SS"];

ただし、これはNSDateの説明をthisとして返します。

2011-11-20 05:23:02 +0000

日付に1年の違いがあることに気付いた場合、なぜこれが起こっているのか誰かが説明できますか?

ご協力いただきありがとうございます。

4

2 に答える 2

5

dateformmaterで、yyyy代わりにを使用しますYYYY

そのはず

NSDate* submittedDate =[NSDate utcDateFromString:submittedDateString withFormat:@"yyyy-MM-dd'T'HH:mm:ss.SS"];

それで問題は解決します。

次のリンクで、YYYYを検索します。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

yyyyを使用して年コンポーネントを指定します。よくある間違いはYYYYを使用することです。yyyyは暦年を指定し、YYYYはISO年-週暦で使用される(「年の週」の)年を指定します。ほとんどの場合、yyyyとYYYYは同じ数になりますが、異なる場合があります。通常、暦年を使用する必要があります。

于 2012-12-07T07:46:03.540 に答える
1

この以下の方法を試してください。

-(NSDate *)getUTCFormateDate:(NSString *)localDate withFormat:(NSString *)format 
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:format];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];
    NSDate *date = [dateFormatter dateFromString:localDate];
    return date;        
}

そして、次のように使用します。

    NSDate *dateHere = [[NSDate alloc]init];
    dateHere = [self getUTCFormateDate:@"2012-11-20T05:23:02.34" withFormat:@"yyyy-MM-dd'T'HH:mm:ss.SS"];
    NSLog(@"Date here %@",dateHere);

そして、出力はここの日付です2012-11-20 05:23:02 +0000

UTF形式で文字列の日付を返す別の回答を参照してください。

NSstringの日付をUTCの日付に変換しますここにリンクの説明を入力してください

于 2012-12-07T07:28:26.963 に答える