【问题标题】:How to get the current day number in current month and year如何获取当前月份和年份的当前天数
【发布时间】:2016-10-03 18:03:19
【问题描述】:

我正在使用此代码来获取本周的天数:

static func currentDayOfWeek() -> Int {
    let comp = NSCalendar.current.dateComponents([.weekday], from: Date())
    if comp.weekday == 1 {
        return 7
    }

    return comp.weekday! - 1
}

Monday =  1
Tuesday = 2
...........
Sunday =  7

我无法弄清楚如何获取当前月份和年份的日期。

例如,对于今天,该月的当前天数应该是 3,而对于年份,它应该是 277。

有什么建议吗?

【问题讨论】:

  • 月份中的某一天 - 只需获取 day 组件。
  • 记住,搜索是你的朋友。
  • 与您的问题无关,但您的代码似乎正在改变星期几。星期日 -> 星期六。星期一 -> 星期日,...,星期六 -> 星期五。你为什么要这样做?
  • 因为对我来说星期日返回 1。我希望 1 是星期一。

标签: ios arrays swift


【解决方案1】:
let dayYear = Calendar.current.ordinality(of: .day, in: .year, for: Date())

let dayMonth = Calendar.current.ordinality(of: .day, in: .month, for: Date())

【讨论】:

    【解决方案2】:
    func currentDayOfMonth()->Int {
        return NSCalendar.currentCalendar().ordinalityOfUnit(NSCalendarUnit.Day, inUnit: NSCalendarUnit.Month, forDate: NSDate())
    }
    
    func currentDayOfYear()->Int {
        return NSCalendar.currentCalendar().ordinalityOfUnit(NSCalendarUnit.Day, inUnit: NSCalendarUnit.Year, forDate: NSDate())
    }
    

    【讨论】:

      【解决方案3】:

      原始答案来自this 帖子。

      这将返回“星期一”或星期几:

      func getDayOfWeek(_ today:String) -> String? {
      
          let weekdays = [1:"Sunday", 2:"Monday", 3:"Tuesday", 4:"Wednesday", 5:"Thursday", 6:"Friday", 7:"Saturday"]
      
          let formatter  = DateFormatter()
          formatter.dateFormat = "MM-dd-yyyy"
          if let todayDate = formatter.date(from: today) {
              let myCalendar = Calendar(identifier: .gregorian)
              let weekDay = myCalendar.component(.weekday, from: todayDate)
              let day = weekdays[weekDay]
      
              return day
          } else {
              return nil
          }
      }
      
      getDayOfWeek("10-03-2016")
      

      这将返回“1”或一周的天数:

      func getDayOfWeek(_ today:String) -> Int? {
      
          let formatter  = DateFormatter()
          formatter.dateFormat = "MM-dd-yyyy"
          if let todayDate = formatter.date(from: today) {
              let myCalendar = Calendar(identifier: .gregorian)
              let weekDay = myCalendar.component(.weekday, from: todayDate)
      
              return weekDay
          } else {
              return nil
          }
      }
      
      getDayOfWeek("10-03-2016")
      

      【讨论】:

      • 1) 问题没有问如何获得工作日。 2)问题没有询问解析字符串。 3) 第一种方法有一个硬编码的英文工作日名称数组。使用其他语言的人不会喜欢这样。 DateFormatter 已经有一个属性,其工作日名称采用给定区域设置的适当语言。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多