比较时间字符串

Comparing Time Strings

我有 2 次创建地图注释可见的时间范围(开始时间和结束时间)。只要当前时间大于结束时间,注释就会被删除。用户将时间作为字符串输入,然后将该时间字符串添加到当前日期字符串,然后将日期转换为 "h:mm a, M/dd/yyyy" 为实际日期。我遇到的问题是,如果有人说事件在晚上 (PM) 开始,然后在清晨或某个时间 (AM) 结束,那么事件注释会立即被删除,因为它将结束时间创建为一天中的上午时间即将结束而不是新的一天。这是我当前在代码中获取时间字符串的方法:

let SpotStartTime = StartTimeTextField.text;
    let SpotEndTime = EndTimeTextField.text;

    let date = NSDate();
    let formatter = NSDateFormatter();
    formatter.dateFormat = "M/dd/yyyy";

    let Date = formatter.stringFromDate(date)

    let EndTime = SpotEndTime;



    let RealEndTime = (EndTime! + ", " + Date);
    print(RealEndTime);

然后我使用此方法将此字符串转换为日期:

let TimeStr = EndTime

   let dateFormater : NSDateFormatter = NSDateFormatter()
   dateFormater.dateFormat = "h:mm a, M/dd/yyyy
   let EndDate = (dateFormater.dateFromString(TimeStr))

          let realEnd = EndDate

如何修改它以便将 StartTimeTextField 与 EndTimeTextField 进行比较?我需要一些基本上比较两者的东西,如果 StartTimeTextField 中有 "PM" 而 EndTimeTextField 中有 "AM" 那么 EndTime 会添加 24 小时,但我不知道该怎么做这在代码中。 谁能帮忙?谢谢

我希望我明白你想做什么,我想出了这个功能:

func getTime(startTime:String, startM:String, endTiem: String, endM:String) {

    let date = NSDate();
    let formatter = NSDateFormatter();
    formatter.dateFormat = "M/dd/yyyy";

    let dateStrStart = formatter.stringFromDate(date)
    var dateStrEnd = ""
    if (startM == "PM" && endM == "AM") {
        let dateEnd = NSDate(timeInterval: 86400, sinceDate: date)
        let formatter = NSDateFormatter();
        formatter.dateFormat = "M/dd/yyyy";

        dateStrEnd = formatter.stringFromDate(dateEnd)
    } else {
        dateStrEnd = dateStrStart
    }

    let RealEndTime = (endTiem + ", " + dateStrEnd);
    let RealStartTime = (startTime + ", " + dateStrStart);
}

你只需要抓住上午或下午的部分。 如果 startTime 是下午,endTime 是上午,那么您的 dateEnd 是 currentDate 加上 一个 天。