0
double duration = 20; // duration is in seconds 

NSDate* durationDate = [[NSDate alloc]initWithTimeIntervalSinceReferenceDate:duration];

NSDateFormatter *formatter = nil;


formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"mm:ss"];

NSString *durationString=[formatter stringFromDate:durationDate];//here durationString should have 20 

但我得到了 30:20?从哪里添加这 30 分钟。我试过给更大的数字然后也是同样的结果

请让我知道对此的想法以及如何解决这个问题

4

1 回答 1

5

你可能在印度标准时间?

参考日期定义为格林威治标准时间午夜。IST 是 GMT+5:30。

因此,当您将 20 秒添加到参考日期时,您会得到 GMT 午夜后 20 秒。然后,当您创建日期格式化程序并且不对其进行任何其他设置时,它将在您设备的自然时区中运行。这意味着当您在时间结束时询问分钟和秒时,您会得到 30 分钟和 20 秒。

NSDates 是绝对时间,是任何时区或日历的抽象。如果五个不同时区中的五个设备都[NSDate date]同时调用以获取当前时间,那么它们都将获取具有相同值的对象。

NSDateFormatter将 anNSDate与 anNSCalendar和 an结合NSTimeZone以确定分钟、秒、小时、月、年等。

于 2012-05-24T17:07:13.617 回答