使 NSDateFormatter 发出字符串 "UTC" 而不是字符串 "GMT"?

Make NSDateFormatter emit the string "UTC" instead of the string "GMT"?

我有以下 Objective-C 代码,它试图用当前的 date/time 在 UTC 中生成一个字符串:

NSDate *currentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *utc = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:utc];
[dateFormatter setDateFormat:@"YYYY-MM-dd--HH-mm-ss zzz"];
NSString *utcDateString = [dateFormatter stringFromDate:currentDate];

此代码几乎 生成我想要的。 utcDateString 在我的系统上的结果值为:

2019-06-17--22-28-13 GMT

但是,我想要的输出包括字符串 "UTC", 而不是 "GMT",如:

2019-06-17--22-28-13 UTC

有没有办法让 NSDateFormatter 为日期格式的 zzz 部分发出字符串 "UTC"?我宁愿不必求助于将 "zzz" 从我的日期格式字符串中删除,然后手动将 "UTC" 附加到生成的日期字符串上。

没有 returns UTC 的日期格式说明符。

由于您正在为格式化程序硬编码 UTC 时区,因此只需将字符串 UTC 硬编码为日期格式即可。

另请注意,您想要的年份是 yyyy,而不是 YYYY

[dateFormatter setDateFormat:@"yyyy-MM-dd--HH-mm-ss 'UTC'"];

如果您需要处理其他时区并希望 GMT 显示为 UTC,则使用 zzz(正如您已经使用的那样)并对结果使用字符串替换以进行转换GMTUTC.

要考虑的另一个可能的想法是使用一些 X 作为时区说明符。这会将时区偏移量作为数字给出,但如果时区偏移量为 0,则结​​果为 Z(对于祖鲁语)。