【问题标题】:Remove isLeapMonth: false删除 isLeapMonth: false
【发布时间】:2019-05-10 07:14:49
【问题描述】:

下面的代码应该返回自单元格创建以来的天数,它确实如此,但它也返回isLeapMonth: false。这是为什么?如何删除它?

let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.textLabel?.text = itemArray[indexPath.row].title
let startDate = itemArray[indexPath.row].dateCreated
let currentDate = Date()
let components = Set<Calendar.Component>([.day])
let differenceOfDate = Calendar.current.dateComponents(components, from: startDate!, to: currentDate)
cell.detailTextLabel?.text = "\(differenceOfDate)"
return cell

【问题讨论】:

  • 使用字符串插值将DateComponents 转换为String 并不是向用户显示结果的好方法。自行格式化日期组件,使其以您想要的格式显示。

标签: swift nsdatecomponents


【解决方案1】:

这是因为differenceOfDateDateComponents 类型,这不会返回一个数字。如果需要获取天数,可以通过获取DateComponentsday属性获取这个数字

Calendar.current.dateComponents(components, from: startDate!, to: currentDate).day!

【讨论】:

    【解决方案2】:

    由于您只需要天数,因此您应该从生成的 DateComponents 中仅提取 day 值并根据需要打印该数字。

    cell.detailTextLabel?.text = "\(differenceOfDate.day!) days"
    

    请注意,在这里使用! 是安全的,因为您专门请求了.day 组件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多