【问题标题】:How can I get the current month as String? [duplicate]如何以字符串形式获取当前月份? [复制]
【发布时间】:2017-10-04 20:54:38
【问题描述】:

我需要得到当月的可能,但我做不到。我怎样才能做到这一点?

   let date = NSDate()
   let calendar = NSCalendar.currentCalendar()
   let components = calendar.components([.Day , .Month , .Year], fromDate: date)
   
   let year =  components.year
   let month = components.month
   let day = components.day

我已经这样做了,但没有成功。

【问题讨论】:

  • 您想要将序数作为字符串、月份名称(使用哪种语言)还是其他内容?并考虑更新到 Swift 3。这就是未来。
  • @vadian 3 已经过去了。我们在 3.1
  • @LeoDabus 当然我的意思是 Swift 3 在 方面就像一个重大升级。
  • @vadian 我只是在展示他尽快升级的重要性:)

标签: ios swift date nsdate nscalendar


【解决方案1】:
let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "LLLL"
let nameOfMonth = dateFormatter.string(from: now)

【讨论】:

  • 独立月份的正确格式是 LLLL userguide.icu-project.org/formatparse/datetime
  • 是否可以设置返回月份的语言?我尝试使用语言环境,但它不起作用。我想获取 iPhone 上设置的当前语言
  • @codddeer123 DateFormatter 默认使用设备的区域设置。当然,您可以通过设置不同的语言环境来覆盖它:dateFormatter.locale = Locale(identifier: "es")
【解决方案2】:

Swift 3.0 及更高版本

你使用 DateFormatter() 见下文,用于 Date 的扩展。

将此添加到项目中全局范围内的任何位置。

extension Date {
    func monthAsString() -> String {
            let df = DateFormatter()
            df.setLocalizedDateFormatFromTemplate("MMM")
            return df.string(from: self)
    }
}

然后您可以在代码中的任何位置使用它。

let date = Date()
date.monthAsString() // Returns current month e.g. "May"

【讨论】:

  • 我应该使用 NSdate 日期未声明 ....swift 2
【解决方案3】:

如果您使用的是 Swift 3.0,那么扩展和 Date 类是不错的选择。

试试下面的代码

extension Date {
    var month: String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MMMM"
        return dateFormatter.string(from: self)
    }    
}

像下面这样使用它:

 let date = Date()
 let monthString = date.month

【讨论】:

  • 我正在使用 swift 2
  • 兄弟,如果可以的话,就上 Swift 3.0。 bcz 在最新的 swift 上发生了很多事情
  • Swift 4.0 解决方案:DateFormatter().monthSymbols[currentMonth - 1]
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 2018-04-09
  • 1970-01-01
相关资源
最近更新 更多