我有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小时,但我不知道如何在代码中执行此操作。 有人可以帮忙吗?感谢
答案 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
加上一个日。