【问题标题】:Not getting correct date from NSDate没有从 NSDate 获得正确的日期
【发布时间】:2015-02-20 05:00:13
【问题描述】:

我是 iOS 编程新手,我想获得两个 NSDate 对象之间的差异,但我无法计算正确的差异,因为我没有从 [NSDate Date] 获得正确的日期。

查看随附的屏幕截图。我没有明白我做错了什么?

我已经尝试过this onethis one also 的解决方案。

如果我做错了什么,请提出建议?

【问题讨论】:

  • 这些建议都不适合你的原因是因为你试图格式化日期之前你计算出间隔。先获取区间,再格式化日期。
  • @SASmith 检查屏幕截图,我的问题是我得到了错误的数据“2015-19-20”,这是不可能的,所以它没有工作,但现在我明白了,它正在工作。
  • 您的屏幕截图是关于格式化而不是关于差异。这有点误导,因为您的问题是询问如何获得时间间隔而不是如何显示它。 [NSDate date]; 会在它被调用的那一刻给你时间,而不是时差。
  • 我会考虑将问题重命名为格式化差异而不是获取差异以避免管理员特权人员关闭它或将其标记为重复 :-) 我希望你已经解决了你的问题现在:-)
  • 是的,感谢您的建议 :-) @SASmith

标签: ios nsdate nsdateformatter


【解决方案1】:

试试

const NSTimeInterval difference = [date1 timeIntervalSinceDate:date2];

这将返回两个日期之间的秒数

【讨论】:

  • 感谢您的帮助,但我在错误的格式中遇到了错误,我已经解决了。
【解决方案2】:

试试这个,这将帮助您分别获得差异:-

unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:fistDate   toDate:secondDate  options:0];

int months = [conversionInfo month];
int days = [conversionInfo day];
int hours = [conversionInfo hour];
int minutes = [conversionInfo minute];

[NSString stringWithFormat:@"%d months , %d days, %d hours, %d min", months, days, hours, minutes];

【讨论】:

  • 感谢您的帮助,但我在错误的格式中遇到了错误,我已经解决了。
【解决方案3】:

我得到了解决方案,它本身只需要替换

[formatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"];[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];

它成功了。

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 2011-09-27
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多