80

NSDate有没有一种简单的方法可以使用当前的 UTC 日期/时间来初始化?

4

3 回答 3

147

[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;
}
于 2010-04-11T02:26:15.083 回答
13

NSDate 是对从绝对参考日期 2001 年 1 月 1 日 00:00 GMT 开始的间隔的引用。因此类方法 [NSDate date] 将返回该间隔的表示。要以 UTC 文本格式显示该数据,只需使用 NSDateFormatter 和适当的 NSTimeZone (UTC) 来根据需要进行渲染。

于 2010-04-11T02:44:12.077 回答
1

NSDate对象封装了一个时间点,独立于任何特定的日历系统或时区。日期对象是不可变的,表示相对于绝对参考日期(2001 年 1 月 1 日00:00:00 UTC )的不变时间间隔。

斯威夫特版本:

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)
    }
}
于 2016-01-09T17:20:59.120 回答