我正在初始化我的NSDateFormatter:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];
dateString
现在是:
Thu, 29 Jul 2010 14:58:42 GMT+00:00
我想摆脱“+00:00”
我猜测http://unicode.org/reports/tr35/tr35-6.html#Time_Zone_Fallback我可能有本地化问题。我现在通过手动删除“+00:00”来解决这个问题,但这并不理想。
修改
我尝试了几种新方法来创建NSTimeZone,但它们都生成相同的dateString
:
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
答案 0 :(得分:23)
如果您不想显示时区,请从格式字符串中删除尾随的'z'字符。
修改强>
另一方面,如果您只想显示时区名称,只需将'z'设为大写。 ((编辑:保留命名时区的'z'小写,即-0800的PST和大写'Z'))
修改强>
小写'z'适用于所有其他时区,但遗憾的是GMT是一个特殊情况。因此,最简单的方法是省略'z'并将“GMT”附加到格式化的日期。
答案 1 :(得分:4)
接受的答案有错字。
另一方面,如果您只想显示时区名称,只需将'z'设为大写。
保留指定时区的'z'小写,即PST和大写'Z'表示-0800
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMMM dd, yyyy (EEEE) HH:mm:ss z Z"];
NSDate *now = [NSDate date];
NSString *nsstr = [format stringFromDate:now];
// 2013年1月23日(星期三)12:33:46 PST -0800