0

我有带有 datetimepicker 的 ios 应用程序,并且我将日期存储到具有“日期”类型的数据库中。所以它会存储一些数字

日期来自数据库并在 NSString 中显示如下:2012-06-25 06:45:06 +0000

这会给我格林威治标准时间 0,我希望这次是格林威治标准时间 +5:30 并将其显示到 texlfield。


strTime = @"2012-06-25 06:45:06 +0000";// thats comes form database like this.

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy-MM-dd hh:mm"]; NSDate *myDate = [dateFormat dateFromString:strTime]; NSString *strDate = [dateFormat stringFromDate:myDate]; NSLog(@"%@", strDate); txtTime.text = strDate;

结果将是(空)我想显示像 2012-06-25 12:15:06 这样的时间(格林威治标准时间 +5:30)

4

1 回答 1

1

您需要设置时区,如下所示

NSString *strDate = @"2012-06-25 06:45:06 +0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
int secondsFromGMT = 5.5 * 3600;
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT]];

NSDate *date = [formatter dateFromString:strDate];
NSString *strWithTimeZone = [formatter stringFromDate:date];
NSLog(strWithTimeZone); //2012-06-25 12:15:06 GMT+05:30
于 2012-06-25T07:20:08.723 回答