【问题标题】:Why does time returned by [NSDate date] differ from my current time?为什么 [NSDate date] 返回的时间与我当前的时间不同?
【发布时间】:2023-04-03 09:38:02
【问题描述】:

大家好 我在印度。我使用以下代码获取当前日期。

[NSDate date]

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

提前致谢

【问题讨论】:

  • 不,实际时间是 2011-01-20 06:51:35 +0000,您的当地时间是 2011-01-20 12:21:35 +0530。您的当地时间 /never/ 是 +0000,因为那是 GMT
  • 如果有帮助,您应该接受答案,以便鼓励开发人员帮助其他开发人员......
  • 我应该假设 [NSDate date] 在 GMT0 中返回当前日期和时间吗?
  • 它返回 GMT + 00000

标签: objective-c cocoa timezone nsdate


【解决方案1】:

为此,您需要使用日期格式化程序。下面是示例代码。

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;

干杯

【讨论】:

  • 我应该假设 [NSDate date] 在 GMT0 中返回当前日期和时间吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-24
      • 2020-01-18
      • 2016-08-03
      • 2016-06-27
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多