【问题标题】:how to get the date only in iOS not time如何仅在 iOS 中获取日期而不是时间
【发布时间】:2019-04-03 09:02:55
【问题描述】:

我想获取 iOS 中唯一的日期而不是时间 我的代码是

extension Date{
   var DateInDate: Date{
      let formatter = DateFormatter()
      formatter.setLocalizedDateFormatFromTemplate("yyyy-MM-dd")
      formatter.locale = Locale(identifier: "en_IN")
      let dateInString = formatter.string(from: self)
      return formatter.date(from: dateInString)!
   }
}

如果我按照上述格式进行操作,我得到的答案是“2019 年 4 月 3 日凌晨 12:00”

我的其他代码是

extension Date{
   var DateInDate: String{
      let formatter = DateFormatter()
      formatter.dateStyle = .short
      formatter.timeStyle = .none
      formatter.setLocalizedDateFormatFromTemplate("yyyy-MM-dd")
      formatter.locale = Locale(identifier: "en_IN")
      let dateInString = formatter.string(from: self)
  }
}

但是通过这种方式,我得到的是字符串格式而不是日期格式

我想要日期格式的答案

【问题讨论】:

  • 一个Date 对象代表一个特定的时间点。所以你不能只丢弃它的小时/分钟/秒部分。您真正想要实现的目标是什么?
  • 时间是日期对象的一部分,您无法将其删除,但如果需要,您可以将其设为00:00,但在此之前,您应该确认您正在做您真正想做的事情.
  • 可以根据我的位置说今天是 2019 年 4 月 3 日,我只是希望不是像 2019 年 4 月 3 日 16:00:43 这样的时间,因为我的应用程序正在存储特定日期的数据而不是时间
  • 我认为你不需要返回一个Date,而是从formatter.string(from: self)返回一个String
  • 在第一个代码中,我只返回日期,它还有时间

标签: ios swift date dateformatter


【解决方案1】:

如 cmets 中所述,没有时间部分的 Date 实例是不可能的。

对于Date,一个永恒的日期是午夜,一天的开始

Calendar中有一个方便的API:

let startOfDay = Calendar.current.startOfDay(for: Date())

【讨论】:

  • 我的答案仍然是上午 12:00 的时间
  • 当然可以,因为时间是00:00:00(大部分时间)并且print打印一个包含时间的通用描述字符串。
  • 我真的很想投票,不是因为它提供了我想要的答案,而是将 5 行代码减少到只有 1 行
【解决方案2】:

您应该改用DateComponents。日期总是有时间的。

【讨论】:

  • 用示例解释您的答案如何从日期组件中仅获取日期,否则此答案质量低下且仅包含链接,并且将作为评论。此外,请通过这个how-to-answer
  • let calendar = NSCalendar.current let comps = calendar.dateComponents([.year, .month, .day], from: Date()) 你无法获取 Date 对象,只能使用它。
  • 更新您的答案,而不是通过单击edit向其发布 cmets
  • 我只能使用 Vlad_sh 的答案获得年月日,但是如果我将其转换回日期格式(因为我的模型具有日期类型而不是日期组件类型),我将获得当前时间年月日
【解决方案3】:

试试这个:

 let date = Date()
 let dateFormatter = DateFormatter()
 dateFormatter.timeStyle = DateFormatter.Style.none
 dateFormatter.dateStyle = DateFormatter.Style.short
 dateFormatter.string(from: date)

【讨论】:

  • 它将在我的模型中返回一个字符串,我使用的是日期而不是字符串
猜你喜欢
  • 2015-04-25
  • 2017-10-07
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
相关资源
最近更新 更多