web-dev-qa-db-fra.com

obtenir l'heure et la date par NSDate

comment puis-je récupérer la date et l'heure d'un NSDate. Je veux les voir séparément. Merci

30
Safari
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];

Il existe de nombreuses façons différentes de représenter la date et l'heure, alors vérifiez NSDateFormatter pour plus d'informations.

50
Brodie

j'utiliserais NSDateComponents et NSCalendar si vous voulez vraiment avoir les valeurs pour la minute, l'heure et la date ... Quelque chose comme ça:

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

vous pouvez ensuite utiliser les propriétés des composants pour accéder à la valeur de chaque composant avec component.hour, component.year, etc.

Veuillez également noter que si vous allez avec l'exemple NSDateFormatter - alors vous devez vous rappeler que NSDateFormatter est un objet lourd et vous devriez vraiment le réutiliser si possible ...

17
Moszi

J'utiliserais ce qui suit sur les autres réponses:

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

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

L'avantage qu'il a est qu'il définira le formatage sur ce que l'utilisateur a défini dans ses paramètres système. De cette façon, vous n'avez pas à vous soucier des éléments comme si l'utilisateur préfère leurs dates courtes au format 10/31/11 ou 31/10/11. Voir documentation pour une liste des styles disponibles.

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)
10
McCygnus

Dans Swift vous pouvez vous amuser avec l'extension, par exemple:

// 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)
    }
}

Et puis, n'importe où dans votre code, vous pouvez faire:

print("Time right now: \(NSDate().getTime())") 
2
Luca Davanzo

Swift 4 version de la réponse @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())
0
anoop4real