Swift 尝试从日期/时间中减去数字并在文本字段中设置该值时遇到问题

Swift 尝试从日期/时间中减去数字并在文本字段中设置该值时遇到问题,swift,date,nsdateformatter,nstimeinterval,Swift,Date,Nsdateformatter,Nstimeinterval,我正在开发一个具有开始时间、结束时间和持续时间的应用程序。用户可以通过单击按钮来设置结束时间,并以12:02:03 PM的格式将值设置为“现在”。然后我希望能够以分钟为单位输入持续时间,比如说20分钟 我有一切工作,我可以读取实时持续时间以及看到当前时间。问题是当我试图创建一个函数来从endTime中减去持续时间时。我似乎无法获得正确的语法或格式 我已经做了很多这样的例子搜索。以下是我到目前为止遇到的情况 controltextdichange功能正在监视durationTextField

我正在开发一个具有开始时间、结束时间和持续时间的应用程序。用户可以通过单击按钮来设置结束时间,并以12:02:03 PM的格式将值设置为“现在”。然后我希望能够以分钟为单位输入持续时间,比如说20分钟

我有一切工作,我可以读取实时持续时间以及看到当前时间。问题是当我试图创建一个函数来从endTime中减去持续时间时。我似乎无法获得正确的语法或格式

我已经做了很多这样的例子搜索。以下是我到目前为止遇到的情况

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
}