我有以下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”。
答案 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)。