web-dev-qa-db-fra.com

Objective-C définissant NSDate sur UTC actuel

Existe-t-il un moyen simple d'initier un NSDate avec la date/heure UTC actuelle?

79
Brodie

[NSDate date];

Vous voudrez peut-être créer une catégorie qui fait quelque chose comme ceci:

-(NSString *)getUTCFormateDate:(NSDate *)localDate
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateString = [dateFormatter stringFromDate:localDate];
    [dateFormatter release];
    return dateString;
}
146
jessecurry

NSDate est une référence à un intervalle à partir d'une date de référence absolue, le 1er janvier 2001 00:00 GMT. La méthode de classe [date NSDate] renverra donc une représentation de cet intervalle. Pour présenter ces données dans un format textuel en UTC, utilisez simplement NSDateFormatter avec le NSTimeZone (UTC) approprié pour effectuer le rendu selon les besoins.

13
rcw3

NSDate les objets encapsulent un seul point dans le temps, indépendamment de tout système calendaire ou fuseau horaire particulier. Les objets de date sont immuables, représentant un intervalle de temps invariant par rapport à une date de référence absolue (00:00:00 [~ # ~] utc [~ # ~] le 1er janvier 2001).

Version Swift:

extension NSDate {
    func getUTCFormateDate() -> String {
        let dateFormatter = NSDateFormatter()
        let timeZone = NSTimeZone(name: "UTC")
        dateFormatter.timeZone = timeZone
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return dateFormatter.stringFromDate(self)
    }
}
2
Tikhonov Alexander