比较时间字符串

时间:2015-10-03 22:08:15

标签: swift nsdate

我有2次创建地图注释可见的时间范围(开始时间和结束时间)。只要当前时间大于结束时间,就会删除注释。用户将时间输入为字符串,然后将该时间字符串添加到当前日期字符串,然后将日期转换为“h:mm a,M / dd / yyyy”为实际日期。我遇到的问题是,如果有人说事件在夜间开始(PM)然后在清晨或某事(AM)结束,那么事件注释会立即被删除,因为它会将结束时间创建为当天的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小时,但我不知道如何在代码中执行此操作。 有人可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:2)

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

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);
}

你只需要抓住AM或PM部分。 如果startTime是PM而endTime是AM,那么您的dateEnd是currentDate加上一个日。