String 在Swift中比较时间字符串

String 在Swift中比较时间字符串,string,swift,parse-platform,String,Swift,Parse Platform,在我正在制作的应用程序中,当视图加载时,只要当前时间大于给定时间,我希望在后台删除一个对象。否则,如果当前时间小于对象正常加载的给定时间。这在一小时内的任何时间都可以正常工作,例如,如果当前时间是晚上9:30,而给定时间是晚上9:45,那么它可以正常工作,但是如果当前时间是晚上9:30,而给定时间是晚上11:45,出于某种原因,它不知道如何比较时间,因此它不工作。这是我的密码: if timeString > End { self.SpotterMap.removeAnnotat

在我正在制作的应用程序中,当视图加载时,只要当前时间大于给定时间,我希望在后台删除一个对象。否则,如果当前时间小于对象正常加载的给定时间。这在一小时内的任何时间都可以正常工作,例如,如果当前时间是晚上9:30,而给定时间是晚上9:45,那么它可以正常工作,但是如果当前时间是晚上9:30,而给定时间是晚上11:45,出于某种原因,它不知道如何比较时间,因此它不工作。这是我的密码:

 if timeString > End {
    self.SpotterMap.removeAnnotation(SpotAnnotation)

    let endTime = End

    let query:PFQuery = PFQuery(className: "SpotInfo")
    query.whereKey("spotendtime", equalTo: endTime)
    query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

        if let objects = objects {

            for object in objects {

                object.deleteInBackground()


            }

        }
    })

    print ("spot removed")
}
谁能给我的问题一个解决办法?
谢谢

如果要使用times,您需要使用日期的
NSDate
类型表示法,以获得最佳的准确性,而不是字符串表示法。 您需要更改您的解析类
spotInfo
,并添加一个类型为
date
的列,假设您将其称为“realSpotEndTime”

要比较时间,请使用
。直接对NSDates进行比较
,如果按升序排列时日期返回true,则表示第一个日期早于第二个日期。因此,您的
if
语句将变成:;
(注意:要获取当前时间的real,需要在比较之前实例化NSDate()

如果返回true并执行,则表示手机上的当前时间比
End
时间少,请记住,End也需要为NSDate类型,而不是字符串

let currentTime = NSDate()
//currentTime < End
if (currentTime.compare(End) == .OrderedAscending) {
  ...
  query.whereKey("realSpotEndTime", lessThanOrEqualTo: currentTime)
}
let currentTime=NSDate()
//当前时间<结束
如果(currentTime.compare(End)=.OrderedAscending){
...
query.whereKey(“realSpotEndTime”,lessthanRequalto:currentTime)
}
或者,您也可以检查当前时间是否超过结束时间

//End < currentTime
if (End.compare(currentTime) == .OrderedAscending) {
// fix parse query here
}
//结束<当前时间
if(End.compare(currentTime)=.OrderedAscending){
//在这里修复解析查询
}

如果不知道变量的值,很难判断。我建议您使用一些断点完成de应用程序,并查看variables@Glenn我在第一段中给出了一个变量的例子。