Есть ли простой способ инициализировать NSDate
с текущей датой/временем UTC?
Objective-C настройка NSDate на текущий UTC
Ответ 1
[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;
}
Ответ 2
NSDate является ссылкой на интервал от абсолютной контрольной даты, 1 января 2001 года 00:00 GMT. Таким образом, метод класса [NSDate date] вернет представление этого интервала. Чтобы представить эти данные в текстовом формате в формате UTC, просто используйте NSDateFormatter с соответствующим NSTimeZone (UTC) для рендеринга по мере необходимости.
Ответ 3
NSDate объекты инкапсулируют единую точку во времени, независимо от какой-либо конкретной календарной системы или часового пояса. Объекты Date являются неизменяемыми, представляя собой инвариантный временной интервал относительно абсолютной контрольной даты (00:00:00 UTC 1 января 2001 года).
Быстрая версия:
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)
}
}