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

您的格式化程序字符串不正确。

HH:dd

应该

HH:mm

此外,您需要考虑时区。如果没有+XXXX指定,默认使用 UTC。设置时区:

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

其中/*timezone*/NSTimeZone类指定。使用时区(以及许多不同的时区)的方式有很多种,因此请选择最适合您的一种。

于 2012-06-21T03:25:00.877 回答
1

您正在使用 dd 而不是 mm。这个:

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

应该是这样的:

[ts setDateFormat:@"yyyyMMdd HH:mm"];
于 2012-06-21T03:24:34.963 回答
0

您需要设置语言环境,将其设置为en_us_POSIX.

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

还有,应该是HH:mm,不是dd

于 2012-06-21T03:25:14.353 回答