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

时间:2019-06-17 22:36:56

标签: objective-c nsdateformatter date-formatting

我有以下Objective-C代码,试图用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”。

1 个答案:

答案 0 :(得分:1)

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

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

还请注意,您要yyyy,而不是YYYY

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

如果您需要处理其他时区并希望GMT显示为UTC,请使用zzz(如您所愿)并在结果上使用字符串替换来转换{{ 1}}到GMT

要考虑的另一种可能的想法是为时区说明符使用一定数量的UTC。这样会将时区偏移量指定为数字,但是如果时区偏移量为0,则结果为X(对于Zulu)。