получить время и дату по NSDate - PullRequest
30 голосов
/ 16 апреля 2011

как я могу получить дату и время из NSDate. Я хочу видеть их отдельно. спасибо

Ответы [ 5 ]

50 голосов
/ 17 апреля 2011
NSDate *localDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = @"MM/dd/yy";

NSString *dateString = [dateFormatter stringFromDate: localDate];



NSDateFormatter *timeFormatter = [[NSDateFormatter alloc]init];
timeFormatter.dateFormat = @"HH:mm:ss";


NSString *dateString = [timeFormatter stringFromDate: localDate];

Существует много разных способов представления даты и времени, поэтому проверьте NSDateFormatter для получения дополнительной информации.

17 голосов
/ 17 апреля 2011

Я бы пошел с использованием NSDateComponents и NSCalendar, если вы действительно хотите иметь значения для минуты, часа и даты ... Примерно так:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit
                                                                   fromDate:[NSDate date]];

тогда вы можете использовать свойства компонентов для доступа к значению каждого компонента с помощью component.hour, component.year и т. Д.

Также обратите внимание, что если вы собираетесь использовать пример NSDateFormatter, то вам следует помнить, что NSDateFormatter является тяжелым объектом, и вы должны действительно использовать его, если это возможно ...

10 голосов
/ 17 апреля 2011

Я бы использовал следующие ответы над другими:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

NSString *formattedDateString = [dateFormatter stringFromDate:yourDate];
[dateFormatter release];

Преимущество, которое он имеет, состоит в том, что он установит форматирование на то, что пользователь установил в своих системных настройках. Таким образом, вам не нужно беспокоиться об элементах, например, если пользователь предпочитает свои короткие даты в формате 10/31/11 или 31/10/11. См. документацию для списка доступных стилей.

Swift 2.2 :

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeStyle = .NoStyle
let myDateString = dateFormatter.stringFromDate(myNSDate)

dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle
dateFormatter.timeStyle = .ShortStyle
let myTimeString = dateFormatter.stringFromDate(myNSDate)
1 голос
/ 16 февраля 2016

В Swift вы можете наслаждаться расширением, например:

// MARK: - NSDate extension -

extension NSDate {

    func toString() -> String {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd MMMM yyyy - HH:mm"
        return dateFormatter.stringFromDate(self)
    }

    func getTime() -> String {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "HH:mm"
        return dateFormatter.stringFromDate(self)
    }

    func getDate() -> String {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd/MM/yyyy"
        return dateFormatter.stringFromDate(self)
    }
}

И тогда в любом месте вашего кода вы можете сделать:

print("Time right now: \(NSDate().getTime())") 
0 голосов
/ 24 апреля 2019

SWIFT 4 версия ответа @McCygnus

let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
let myDateString = dateFormatter.string(from: Date())

dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short
let myTimeString = dateFormatter.string(from: Date())
...