【问题标题】:Swift: How to get string values of days, months and year from a date picker?Swift:如何从日期选择器中获取日期、月份和年份的字符串值?
【发布时间】:2023-03-03 03:26:02
【问题描述】:

我想从日期选择器中获取日、月、年的单独字符串值。并将这三个值分配给 3 个变量。我已经做到了:

@IBAction func doneClicked(sender: UIButton) {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = GlobalConfiguration.getDatePickerFormat()
    let formattedDate = dateFormatter.stringFromDate(self.datePicker.date)
    self.delegate?.datePickerDidSelect(formattedDate)
    }

这是我的几个代码,我可以将日期文本设置为按钮标题的字符串。现在我想要分别的天、月和年。我怎么能这样做..??

【问题讨论】:

  • 请写出输出。即您从日期格式化程序获得的字符串。
  • 你期望什么类型的输出,你能举个例子吗
  • 当然可以。我必须将每一天、每一月和每一年作为参数传递。所以我想提取单个组件

标签: ios swift xcode calendar uidatepicker


【解决方案1】:

你有两种方法可以做到这一点,取决于你是想看当月的数字还是他的名字:

Calendar:

let calendar = Calendar.current
let components = calendar.dateComponents([.day,.month,.year], from: self.datePicker.date))
if let day = components.day, let month = components.month, let year = components.year {
    let dayString = String(day)
    let monthString = String(month)
    let yearString = String(year)
}

DateFormatter:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy"
let year: String = dateFormatter.string(from: self.datePicker.date))
dateFormatter.dateFormat = "MM"
let month: String = dateFormatter.string(from: self.datePicker.date))
dateFormatter.dateFormat = "dd"
let day: String = dateFormatter.string(from: self.datePicker.date))

使用DateFormatter,您可以选择更多格式,因为您可以管理输出格式

【讨论】:

  • 用你的选择器的日期替换日期
  • @Sam 这段代码在 Swift 2.x 中的工作原理是你告诉你正在使用 Swift 2 stackoverflow.com/questions/44040875/…
  • 而'components.day'是可选变量,拆箱前最好检查一下。
【解决方案2】:

您可以为此使用NSDateComponents

let dateComponents = NSCalendar.currentCalendar().components([.Year, .Month, .Day], fromDate: self.datePicker.date)
let year = String(dateComponents.year)
let month = String(dateComponents.month)
let day = String(dateComponents.day)

【讨论】:

  • @Sam 我知道,这就是我在 Swift 2.x 中添加代码的原因
【解决方案3】:

斯威夫特 3:

   if let date = self.datePicker.date {
        let components = NSCalendar.current.dateComponents([.day,.month,.year],from:date)
        if let day = components.day, let month = components.month, let year = components.year {
            let dayString = "\(day)"
            let monthString = "\(month)"
            let yearString = "\(year)"
        }
    }

【讨论】:

  • 这些不是字符串。
猜你喜欢
  • 2020-12-19
  • 2021-10-29
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
相关资源
最近更新 更多