1. ホーム
  2. ios

[解決済み] iOSでISO 8601の日付を取得するにはどうしたらいいですか?

2022-08-11 15:53:03

質問

ISO 8601 の日付文字列を取得するのは簡単です(例えば。 2004-02-12T15:19:21+00:00 ) を PHP で取得するのは簡単です。 date('c') を使うことができますが、Objective-C (iPhone)ではどうなのでしょうか?同じように短い方法はありますか?

以下は 長い を行う方法を見つけました。

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZ";

NSDate *now = [NSDate date];
NSString *formattedDateString = [dateFormatter stringFromDate:now];
NSLog(@"ISO-8601 date: %@", formattedDateString);

// Output: ISO-8601 date: 2013-04-27T13:27:50-0700

これほど中心的なもののために、非常に多くの煩雑な作業があるように思われます。

どのように解決するのですか?

使用方法 NSDateFormatter :

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];   
NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
[dateFormatter setCalendar:[NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]];

NSDate *now = [NSDate date];
NSString *iso8601String = [dateFormatter stringFromDate:now];

そしてSwiftでは

let dateFormatter = DateFormatter()
let enUSPosixLocale = Locale(identifier: "en_US_POSIX")
dateFormatter.locale = enUSPosixLocale
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateFormatter.calendar = Calendar(identifier: .gregorian)

let iso8601String = dateFormatter.string(from: Date())