2016-10-03 2 views
-2

года Я использую этот код, чтобы получить номер дня на текущей неделе:Как получить номер текущего дня в текущем месяце и

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.

Любые предложения?

+3

день года: HTTP: //stackoverflow.com/questions/28712883/nsdate-day-of-the-year-swift – rmaddy

+0

День месяца - просто получите компонент 'day'. – rmaddy

+0

Помните, что поиск - ваш друг. – rmaddy

ответ

2
let dayYear = Calendar.current.ordinality(of: .day, in: .year, for: Date()) 

let dayMonth = Calendar.current.ordinality(of: .day, in: .month, for: Date()) 
0
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()) 
} 
-1

оригинальный ответ от 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") 
+0

1) Вопрос не задал вопрос о том, как получить будний день. 2) Вопрос не спрашивал о разборе строк. 3) Первый метод имеет массив хардкодов имен дней недели на английском языке. Людям, использующим другие языки, это не понравится. 'DateFormatter' уже имеет свойство с именами дней недели на соответствующем языке для данного языка. – rmaddy

Смежные вопросы