Objective C устанавливает NSDate к текущему UTC - PullRequest
79 голосов
/ 11 апреля 2010

Существует ли простой способ инициализации NSDate с текущей датой / временем UTC?

Ответы [ 3 ]

146 голосов
/ 11 апреля 2010

[NSDate date];

Вы можете создать категорию, которая делает что-то вроде этого:

-(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;
}
13 голосов
/ 11 апреля 2010

NSDate - это ссылка на интервал от абсолютной контрольной даты, 1 января 2001 года, 00:00 по Гринвичу. Таким образом, метод класса [NSDate date] вернет представление этого интервала. Чтобы представить эти данные в текстовом формате в формате UTC, просто используйте NSDateFormatter с соответствующим NSTimeZone (UTC) для визуализации по мере необходимости.

2 голосов
/ 09 января 2016

NSDate объекты инкапсулируют один момент времени, независимо от какой-либо конкретной календарной системы или часового пояса. Объекты даты являются неизменными и представляют собой неизменный временной интервал относительно абсолютной контрольной даты (00:00:00 UTC на 1 января 2001 года).

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