Подтвердить что ты не робот

Iphone Получить текущий год как строку

Как получить текущий год как строку в Obj-C?

Также как мне сравнить то же самое с использованием значения другого года?

Желательно ли проводить сравнение строк или сопоставление год за годом?

4b9b3361

Ответ 1

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"];
NSString *yearString = [formatter stringFromDate:[NSDate date]];

// Swift
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy"
let year = dateFormatter.string(from: Date())

Вы можете сравнить NSString с помощью метода -isEqualToString:.

Ответ 2

NSCalendar *gregorian = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
NSInteger year = [gregorian component:NSCalendarUnitYear fromDate:NSDate.date];

Примечание. Есть несколько идентификаторов календаря, кроме NSGregorianCalendar. Используйте все, что подходит для вашей локали. Вы можете запросить любой набор компонентов, которые вы хотите поразрядным OR'ing полей вместе (например, NSYearCalendarUnit | NSMonthCalendarUnit) и вместо этого использовать components:fromDate. Вы можете прочитать об этом в Руководство по программированию даты и времени.

С компонентами календаря как примитивными типами сравнения эффективны.

Ответ 3

В Swift вы можете получить только год по заданному коду

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy"
let dateStr = formatter.stringFromDate(NSDate())
print(dateStr)

Вывод:

2017

Ответ 4

Swift

Более простой способ получить любые элементы даты в качестве необязательной строки.

extension Date {

  // Year 
  var currentYear: String? {
    return getDateComponent(dateFormat: "yy")
    //return getDateComponent(dateFormat: "yyyy")
  }


  func getDateComponent(dateFormat: String) -> String? {
    let format = DateFormatter()
    format.dateFormat = dateFormat
    return format.string(from: self)
  }


}


print("-- \(Date().currentYear)")  // result -- Optional("2017")