生成此类型的 NSDate:2015-04-27T10:45:52Z
Generate NSDate of this type: 2015-04-27T10:45:52Z
我正在尝试通过以下方式将日期设置为 PayPal 预批准密钥:
@"2015-04-27T10:45:52Z", @"startingDate",
这个日期有效,但我不知道如何用代码重现它。我尝试这样做:
NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
[dateformate setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; // Date formater
NSString *date = [dateformate stringFromDate:[NSDate date]];
但这不起作用。日期末尾的 Z 是多少?
首先,您的日期格式不正确。其次,为了获得一致的结果,您应该始终对 en_US_POSIX
语言环境进行硬编码(日期格式化程序默认为用户的语言环境):
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
或者,我对 iso-8601-date-formatter 有过积极的体验。 ISO 8601 是一个非常复杂的标准,有 很多 边缘情况,而这个库似乎能够处理其中的大部分。
Z
代表祖鲁语(即UTC/GMT)。如果您想生成该格式的日期字符串(带有 Z
限定符的 GMT),请参考 Apple's Technical Q&A #1480,它提醒我们同时指定 locale
和 timeZone
:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
或者在 macOS 10.12 和 iOS10 中,您可以:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
然后你可以做:
NSString *dateString = [formatter stringFromDate:[NSDate date]];
我正在尝试通过以下方式将日期设置为 PayPal 预批准密钥:
@"2015-04-27T10:45:52Z", @"startingDate",
这个日期有效,但我不知道如何用代码重现它。我尝试这样做:
NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
[dateformate setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; // Date formater
NSString *date = [dateformate stringFromDate:[NSDate date]];
但这不起作用。日期末尾的 Z 是多少?
首先,您的日期格式不正确。其次,为了获得一致的结果,您应该始终对 en_US_POSIX
语言环境进行硬编码(日期格式化程序默认为用户的语言环境):
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
或者,我对 iso-8601-date-formatter 有过积极的体验。 ISO 8601 是一个非常复杂的标准,有 很多 边缘情况,而这个库似乎能够处理其中的大部分。
Z
代表祖鲁语(即UTC/GMT)。如果您想生成该格式的日期字符串(带有 Z
限定符的 GMT),请参考 Apple's Technical Q&A #1480,它提醒我们同时指定 locale
和 timeZone
:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
或者在 macOS 10.12 和 iOS10 中,您可以:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
然后你可以做:
NSString *dateString = [formatter stringFromDate:[NSDate date]];