web-dev-qa-db-ja.com

NSDateを現在のUTCに設定するObjective-C

現在のUTC日付/時刻でNSDateを初期化する簡単な方法はありますか?

79
Brodie

[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;
}
146
jessecurry

NSDateは、2001年1月1日00:00 GMTの絶対参照日からの間隔への参照です。したがって、クラスメソッド[NSDate date]は、その間隔の表現を返します。そのデータをテキスト形式でUTCで表示するには、NSDateFormatterを適切なNSTimeZone(UTC)と共に使用して、必要に応じてレンダリングします。

13
rcw3

NSDate オブジェクトは、特定の暦システムまたはタイムゾーンに関係なく、単一の時点をカプセル化します。日付オブジェクトは不変であり、絶対参照日付に対する不変の時間間隔を表します(00:00:00[〜#〜] utc [〜#〜]2001年1月1日)。

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