Swift 尝试从日期/时间中减去数字并在文本字段中设置该值时遇到问题
我正在开发一个具有开始时间、结束时间和持续时间的应用程序。用户可以通过单击按钮来设置结束时间,并以12:02:03 PM的格式将值设置为“现在”。然后我希望能够以分钟为单位输入持续时间,比如说20分钟 我有一切工作,我可以读取实时持续时间以及看到当前时间。问题是当我试图创建一个函数来从endTime中减去持续时间时。我似乎无法获得正确的语法或格式 我已经做了很多这样的例子搜索。以下是我到目前为止遇到的情况Swift 尝试从日期/时间中减去数字并在文本字段中设置该值时遇到问题,swift,date,nsdateformatter,nstimeinterval,Swift,Date,Nsdateformatter,Nstimeinterval,我正在开发一个具有开始时间、结束时间和持续时间的应用程序。用户可以通过单击按钮来设置结束时间,并以12:02:03 PM的格式将值设置为“现在”。然后我希望能够以分钟为单位输入持续时间,比如说20分钟 我有一切工作,我可以读取实时持续时间以及看到当前时间。问题是当我试图创建一个函数来从endTime中减去持续时间时。我似乎无法获得正确的语法或格式 我已经做了很多这样的例子搜索。以下是我到目前为止遇到的情况 controltextdichange功能正在监视durationTextField
controltextdichange
功能正在监视durationTextField
,我可以打印以控制输入。然后,我希望能够使用durationTextField
值运行timeString
函数,并从endTime
中减去它,然后将该值设置为startTime
奇怪的是Xcode告诉我:
调用“addingTimeInterval”的结果未使用
这并不奇怪,警告告诉你创建并返回一个新的日期 只需使用调用“addingTimeInterval”的结果 将
Date
转换为String
并返回到Date
是毫无意义的
func timeString(time: TimeInterval) {
formatter.dateFormat = "hh:mm:ss a"
let newDate = Date().addingTimeInterval(-time)
let wtf = formatter.string(from:newDate)
startTime.stringValue = wtf
}
这并不奇怪,警告告诉你创建并返回一个新的日期 只需使用调用“addingTimeInterval”的结果 将
Date
转换为String
并返回到Date
是毫无意义的
func timeString(time: TimeInterval) {
formatter.dateFormat = "hh:mm:ss a"
let newDate = Date().addingTimeInterval(-time)
let wtf = formatter.string(from:newDate)
startTime.stringValue = wtf
}
你采取的步骤太多了。只需创建一个
日期
,即从“现在”开始的时间
秒。然后将该日期
转换为字符串
func timeString(time: TimeInterval) {
let startDate = Date(timeIntervalSinceNow: -time)
formatter.dateFormat = "hh:mm:ss a"
let wtf = formatter.string(from: startDate)
startTime.stringValue = wtf
}
我假设您希望
startDate
比现在早几秒。您的步骤太多了。只需创建一个日期
,即从“现在”开始的时间
秒。然后将该日期
转换为字符串
func timeString(time: TimeInterval) {
let startDate = Date(timeIntervalSinceNow: -time)
formatter.dateFormat = "hh:mm:ss a"
let wtf = formatter.string(from: startDate)
startTime.stringValue = wtf
}
我假设你希望
startDate
是时间
秒之前。在瓦迪安和马迪的帮助下,我能够使它工作
这是我的工作代码
func timeString(time: TimeInterval) {
formatter.dateFormat = "hh:mm a"
let endTimeValue = formatter.date(from: endTime.stringValue)
let newTime = endTimeValue!.addingTimeInterval(-time * 60)
let newtimeString = formatter.string(from:newTime)
startTime.stringValue = newtimeString
}
在瓦迪安和马迪的帮助下,我成功了 这是我的工作代码
func timeString(time: TimeInterval) {
formatter.dateFormat = "hh:mm a"
let endTimeValue = formatter.date(from: endTime.stringValue)
let newTime = endTimeValue!.addingTimeInterval(-time * 60)
let newtimeString = formatter.string(from:newTime)
startTime.stringValue = newtimeString
}