【问题标题】:converting an float to NSDate将浮点数转换为 NSDate
【发布时间】:2009-05-09 23:54:06
【问题描述】:

我想将浮点数转换为 NSDate

我使用以下方法将 NSDate 转换为浮点数:

// Turn the date into Integers 
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];  
NSCalendarUnit unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;  
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:nsdate_wakeTime];  
NSInteger hour = [dateComponents hour];  
NSInteger min = [dateComponents minute];  

//Convert the time in 24:60 to x.x format.
float myTime = hour + min/60; 

在我对 mytime 变量进行一些数学运算之后,我得到了许多其他时间相同的浮点格式。

如何将浮点数转换为 NSDate?

谢谢!

【问题讨论】:

  • NSDate 使用双精度表示自某个事件 (NSTimeInterval) 以来的秒数。你能简单地用它来做数学吗?然后很容易转换回 NSDate。否则,您必须有某种参考,然后将您的双精度转换回小时/分钟/秒,并从您的参考中添加/减去它们。

标签: objective-c nsdate


【解决方案1】:

如果您将计算出的时间转换为秒(因此,mytime * 60),那么您可以使用dateWithTimeIntervalSinceReferenceDate: 返回NSDate。根据您所做的数学计算,此处引用的日期似乎是相关日期的 00:00。正如 Jason 所提到的,可能有更好的方法来完成您想要完成的工作。

此外,如果您真的想要分钟,您需要将“myTime”计算更改为除以 60.0;您的示例代码将小于 60 的整数值除以整数值 60,该整数值始终为 0。

【讨论】:

  • 好的,所以我让用户从日期选择器中选择两次。从那时起,我想对时代做一些数学运算。那么我应该采取哪些步骤来让我的生活变得轻松(我可以直接从 NSDate 中查看小时值吗?)。我从未使用过 NS 库,并且对 Objective-c 很陌生,所以答案可能正盯着我看,但是......
  • 不知道“一点数学”是什么,没有办法建议一种方法。如果您只是想获得日期之间的差异, timeIntervalSinceDate: 将以秒为单位为您提供差异。如果你具体解释你想要完成什么,有人可能会告诉你一个很好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 2011-02-28
  • 2020-08-25
  • 2020-05-14
  • 2012-05-25
相关资源
最近更新 更多