为什么[NSDate日期]返回的时间与我当前时间不同?

时间:2011-01-20 06:53:07

标签: objective-c cocoa timezone nsdate

大家好 我在India.And我使用以下代码来获取当前日期。

[NSDate date]

显示“2011-01-20 06:51:35 +0000”但实际时间为“2011-01-20 12:21:35 +0000” 请告诉我如何获取当前日期。

提前致谢

3 个答案:

答案 0 :(得分:6)

为此需要使用Date Formatter。下面是示例代码。

NSDate *testDate=[NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM DD YY hh:mm"];//You can set your required format here
NSString *dt = [formatter stringFromDate:testDate];
[formatter release];

NSString *strDateTaken=dt;

干杯

答案 1 :(得分:3)

“实际时间”是什么意思?您所在时区的当前时间?考虑到给出的时间值,我猜第一个是GMT,你想要IST(+5:30)。 (请参阅Wikipeda上的Time zones。)取决于您对日期的处理方式 - 如果您只想在当前时区中使用格式化的日期和时间,Aditya的答案应该有效。

答案 2 :(得分:0)

查找当前日期和当前日期与给定日期之间的当前日期和差异......其工作代码

NSDate *testDate=[NSDate date];
NSDateFormatter *formatterNew = [[NSDateFormatter alloc] init];
[formatterNew setDateFormat:@"dd-MM-yyyy HH:mm:ss "]; 
NSString *dt = [formatterNew stringFromDate:testDate];
NSString *strDateTaken=dt;
NSLog(@"Date=%@",strDateTaken);
[formatterNew release]; // This line can be removed if you are using ARC

NSDateFormatter *tempFormatter = [[[NSDateFormatter alloc]init]autorelease];
[tempFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSDate *toDate = [tempFormatter dateFromString:strDateTaken];
NSLog(@"Current Date ==%@",toDate);

NSDateFormatter *tempFormatter1 = [[[NSDateFormatter alloc]init]autorelease];
[tempFormatter1 setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSDate *startdate = [tempFormatter1 dateFromString:@"30-08-2011 16:25:00"];
NSLog(@"Last Date ==%@",startdate);

int i = [startdate timeIntervalSince1970];  
int j = [toDate timeIntervalSince1970];
double X = j-i;
int days=(int)((double)X/(3600.0*24.00));


NSLog(@" Difference :%d",days);