swift - 如何在swift中将 'Date'类型的值转换为 'String'

标签 swift string boolean dateformatter

我想在返回 boolean 值之后重叠日期。

func overLap(start1: String, end1: String, start2: String, end2: String) -> Bool {
    if start1 < end2 && start2 < end1 {
        return false
    }
    return true
}

let start1 = "2019/02/01"
let end1 = "2019/02/20"
let start2 = "2019/02/15"
let end2 = "2019/03/02"

let dateFormatter = DateFormatter()

dateFormatter.dateFormat = "yyyy/MM/dd"

let dateFromString1 = dateFormatter.date(from: start1)
let dateFromString2 = dateFormatter.date(from: end1)
let dateFromString3 = dateFormatter.date(from: start2)
let dateFromString4 = dateFormatter.date(from: end2)

let myString = formatter.String(from: )

let result: Bool = overLap(start1: dateFromString1, end1: dateFromString2, start2: dateFromString3, end2: dateFromString4)
print(result)

这是错误:无法转换“日期”类型的值?到预期的参数类型“字符串” 让结果:Bool = overLap(start1: dateFromString1, end1: dateFromString2, start2: dateFromString3, end2: dateFromString4)

最佳答案

这是典型的类型不匹配错误。您无法比较苹果 (Date) 和橙子 (String)。

您不需要创建 Date 实例。将字符串与 numeric 选项进行比较

func overLap(start1: String, end1: String, start2: String, end2: String) -> Bool {
    if start1.compare(end2, options: .numeric) == .orderedAscending
        && start2.compare(end1, options: .numeric) == .orderedAscending {
        return false
    }
    return true
}

let start1 = "2019/02/01"
let end1 = "2019/02/20"
let start2 = "2019/02/15"
let end2 = "2019/03/02"

let result = overLap(start1: start1, end1: end1, start2: start2, end2: end2)
print(result)

关于swift - 如何在swift中将 'Date'类型的值转换为 'String',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240266/

相关文章:

swift - 我如何使用协议(protocol)将数据从我的 View Controller 传递到其中的容器?

swift - 使用 Swift,如何在我的应用程序终止之前安排本地通知?

ios - 上传图片到服务器时出现绿线

java - 与字符串的合并排序

c# - 如何将字符串转换为十进制表达式?

python - 在 pandas 数据框中,根据其他两列的结果生成第三列数据

PHP、mysql boolean 搜索

swift - 为什么它总是只显示第一个警报?

c++ - 基本的 C 风格字符串复制

java - 将 int 值分配给 JCheckBox