【问题标题】:Convert NSDate to NSString with NSDateFormatter with TimeZone without GMT Time Modifier使用 NSDateFormatter 将 NSDate 转换为 NSString 与 TimeZone 没有 GMT 时间修饰符
【发布时间】:2010-09-14 19:18:16
【问题描述】:

我正在初始化我的 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"];

【问题讨论】:

标签: objective-c timezone nsdateformatter nstimezone


【解决方案1】:

如果您不想显示时区,请从格式字符串中删除结尾的“z”字符。

编辑

另一方面,如果您只想显示时区名称,只需将“z”设为大写即可。 ((编辑:为命名时区保留“z”小写,即 PST 和 -0800 的大写“Z”)

编辑

小写“z”适用于所有其他时区,但不幸的是 GMT 是一个特例。因此,最简单的做法就是省略“z”并将“GMT”附加到格式化日期。

【讨论】:

  • OP 想保留时区缩写,但去掉 +00:00 位。
  • 大写“Z”根据 RFC 822 标准产生“+0000”。我只想要“GMT”
  • 哎呀,简单的小写“z”适用于其他 GMT 的所有时区,这是一种特殊情况。我认为最简单的做法是省略“z”并将“GMT”附加到格式化日期。真的很烦人(除非我误读了)规范没有提供一个简单的方法来做到这一点。
  • 这就是我正在做的。如果您编辑您的答案以反映您之前的陈述,我会将其标记为已回答。
  • 这里有一个要点,关于 'z' 和 'v' 格式化程序:gist.github.com/rwyland/8683010
【解决方案2】:

接受的答案有错别字。

另一方面,如果您只想显示时区名称,只需将“z”设为大写即可。

为命名时区保留小写的“z”,即 PST,为 -0800 保留大写的“Z”

    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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2012-07-08
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多