0

他の例を見てきましたが、まだこの文字列を日付に変換できません。このコードを実行すると、NSLogsから次の出力が得られます。

予測変換:2012-07-01 00:00:00 +0000

タイムスタンプ変換:2012-06-24 00:00:00 +0000

予測:604800.000000

これは、私が使用したハードコードされた日付ではありません。誰かが理由を知っていますか?コードは以下のとおりです。

NSString *timeStamp = @"20120620 19:23";//[[predictionData objectAtIndex:0 ] valueForKey:@"tmstmp"];
    NSString *predictionTime = @"20120620 19:30";// [[predictionData objectAtIndex:0 ] valueForKey:@"prdtm"];


    NSDateFormatter *ts = [[NSDateFormatter alloc] init];
    [ts setDateFormat:@"yyyyMMdd HH:dd"];
    NSDate *convertedTS = [ts dateFromString:timeStamp];

    NSDateFormatter *pt = [[NSDateFormatter alloc] init];
    [pt setDateFormat:@"yyyyMMdd HH:dd"];
    NSDate *convertedPT = [pt dateFromString:predictionTime];

    NSTimeInterval timeDifference = [convertedPT timeIntervalSinceDate:convertedTS];



    NSLog(@"Prediction Conversion: %@", [convertedPT description]);
    NSLog(@"Timestamp Conversion: %@", [convertedTS description]);

    NSLog(@"Prediction: %f", timeDifference);

ありがとう!

4

3 に答える 3

1

あなたはmmの代わりにあなたの分のためにddを使用しています。これ:

[ts setDateFormat:@"yyyyMMdd HH:dd"];

これである必要があります:

[ts setDateFormat:@"yyyyMMdd HH:mm"];
于 2012-06-21T03:24:34.963 に答える
1

フォーマッタ文字列が正しくありません。

HH:dd

する必要があります

HH:mm

さらに、タイムゾーンを考慮する必要があります。指定しない+XXXX場合、デフォルトでUTCが使用されます。タイムゾーンを設定するには:

[ts setTimeZone:[NSTimeZone /*timezone*/]];

ここで、はクラス/*timezone*/によって指定されますNSTimeZone。タイムゾーン(および多くの異なるタイムゾーン)を使用する方法はたくさんあるので、自分に最適なものを選択してください。

于 2012-06-21T03:25:00.877 に答える
0

ロケールを設定する必要があります。に設定しますen_us_POSIX

ts.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_us_POSIX"];

また、そうではHH:mmないはずですdd

于 2012-06-21T03:25:14.353 に答える