Ios 将日期与字符串日期值进行比较
我正在尝试将字符串日期转换为日期类型。但当我尝试下面给出的代码时,在比较两个日期后返回nil值,一个是从日期选择器中选择的日期,第二个是当前日期,但始终给出我的返回号 我真的很困惑如何将字符串日期转换为日期类型,在比较两个日期之后,请检查下面的代码: 代码Ios 将日期与字符串日期值进行比较,ios,swift,datepicker,Ios,Swift,Datepicker,我正在尝试将字符串日期转换为日期类型。但当我尝试下面给出的代码时,在比较两个日期后返回nil值,一个是从日期选择器中选择的日期,第二个是当前日期,但始终给出我的返回号 我真的很困惑如何将字符串日期转换为日期类型,在比较两个日期之后,请检查下面的代码: 代码 let currentDate = Date() let currentDformatter = DateFormatter() currentDformatter.dateFormat = "dd-MM-yyyy"
let currentDate = Date()
let currentDformatter = DateFormatter()
currentDformatter.dateFormat = "dd-MM-yyyy"
let currentDateResult = currentDformatter.date(from: "\(currentDate)")
print("Current Latest Date ",currentDateResult as Any)
let selectedDate = Date()
let selectedDformatter = DateFormatter()
selectedDformatter.dateFormat = "dd-MM-yyyy"
let selectedresult = selectedDformatter.string(from: selectedDate)
print("Current Latest Date ",selectedresult)
if currentDateResult == selectedDate{
print("yes")
}else{
print("no")
}
我还比较了时间,请给我一些建议,告诉我如何防止用户选择超过一定时间的时间选择器。例如,餐厅的关门时间是5点钟
代码:
CurrentDateAndTime 2019-04-15 05:00:00 +0000
SelectDateAndTime 2019-04-16 07:52:28 +0000
我不希望用户在5点后选择时间,我如何检查和比较时间
如何检查和比较时间???有更好的方法检查两个日期是否在同一天
let currentDate = Date()
let selectedDate = Date()
if Calendar.current.isDate(currentDate, inSameDayAs: selectedDate) {
print("yes")
} else {
print("no")
}
您得到的
currentDateResult
是nil
,因为您没有传递正确的日期字符串
,因此需要将日期
转换为字符串
,然后将字符串
传递到如下类似的位置:
let currentDateResult = currentDformatter.date(from: currentDformatter.string(from: currentDate))
否则,您可以执行与上面@vadian答案相同的操作
let currentDate = Date()
let currentDformatter = DateFormatter()
currentDformatter.dateFormat = "dd-MM-yyyy"
let currentDateResult = currentDformatter.date(from: "\(currentDate)")
print("Current Latest Date ",currentDateResult as Any)
在上面的代码中,实际上并没有将日期对象转换为字符串类型。将其插入字符串只会打印出对象及其属性。您必须将日期对象转换为字符串
let myDateInString = "22-08-2018"
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "dd-MM-yyyy"
let date = formatter.date(from: myDateInString) // Optional
let stringVal = formatter.string(from: date!)
debugPrint(stringVal)
如果要比较两个日期,可以使用:
switch date1.compare(date2) {
case .orderedSame: break // exact same
case .orderedAscending: break // date2 comes after date1 in calendar
case .orderedDescending: break // date2 comes before date1 in calendar
}
如果您只想检查两个日期是否为同一天,请使用@vadian的答案是否确定要转换的字符串的格式为“dd-MM-yyyy”?从日期选择器中选择的日期也是一个
日期
,而不是字符串,那么,你为什么不简单地比较这两种Date
类型呢?我也在比较时间。请告诉我如何防止用户在时间选择器中选择超过某个时间的时间。例如,像餐厅关门时间是5点钟,我不希望用户选择5点钟之后的时间,我如何检查和比较时间??您可以比较小时组件:let hour=Calendar.current.component(.hour,from:Date())>17
您尝试过我上次评论中的建议了吗?或设置日期选择器的最小和最大日期。17用于pm,5用于am。这将检查所选日期是否在5点之后。@ShamDass是否不允许用户在每天下午5点之后选择?