【问题标题】:Objective-C - How to Get Date Formatter to Add Colon in Time Zone OffsetObjective-C - 如何获取日期格式化程序以在时区偏移中添加冒号
【发布时间】:2012-07-27 21:40:17
【问题描述】:

我正在尝试格式化日期以匹配服务器端预期的格式。

  • 通缉:1985-01-24T00:00:00-07:00
  • 得到:      1985-01-24T00:00:00-0700
  • 使用:   yyyy-MM-dd'T'HH:mm:ssZZZ

我可以使用日期格式技巧来获取那个冒号吗?

这是我的代码。 _birthdate 是生日选择器提供的日期:

NSDate *birthdate = (NSDate *)resultObject;
[_birthdate setNewTitle:[IRDate mmddyyFromNSDate:birthdate]];            

//Set server-ready birthdate format
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
serverFormattedBirthDate = [formatter stringFromDate:birthdate];

NSLog(@"Birthdate: %@", serverFormattedBirthDate);

【问题讨论】:

    标签: objective-c ios nsdate


    【解决方案1】:

    根据Date Format Specifiers 文档,看起来您需要5 个Z。这会让你得到像"-08:00" 这样的东西。


    啊哈,我明白你的意思了。如果你在 OS X 10.8 上运行格式化,你会得到你期望的字符串。但是,如果您在 iOS 5.1 上运行格式化,您将在字符串中获得额外的“GMT”。

    我猜在最新版本的 CLDR 中基础数据发生了变化。在那种情况下,我不确定正确的答案是什么。

    【讨论】:

    • 是的,但那给了我 1985-01-24T00:00:00GMT-07:00。我不想要 GMT。
    • 在这里运行 OS X 10.7.4。无法得到我想要的确切字符串,但我有一个解决方法,就像你建议的那样使用五个 Z,然后用“”替换“GMT”的字符串。这应该暂时有效。
    猜你喜欢
    • 2022-01-13
    • 2011-03-31
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2013-06-29
    相关资源
    最近更新 更多