iPhone SDK - NSDateFormatter 日+月

Posted

技术标签:

【中文标题】iPhone SDK - NSDateFormatter 日+月【英文标题】:iPhone SDK - NSDateFormatter day + month 【发布时间】:2009-12-11 12:07:58 【问题描述】:

我想只显示日期的日期和月份。基本上是 NSDateFormatterLongStyle 但没有年份。

我面临的问题是本地化。在英文版中,它必须显示例如“January 14”,在法文版中必须显示“14 Janvier”。

有没有简单的方法来打印这些日期?或者我是否使用 ifelse 语句来检查当前语言环境并设置月份之前或之后的日期?

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

查看this question..... 我之前也遇到过同样的问题,但通过使用dateFormat 而不是dateStyle 解决了它

【讨论】:

谢谢马杜普。我已经回答了我自己的问题并发布了该答案的链接。【参考方案2】:

如果不是全部的话,这个功能看起来可以帮助你完成大部分的工作......

+ (NSString *)dateFormatFromTemplate:(NSString *)templateoptions:(NSUInteger)optslocale:(NSLocale *)locale

http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Classes/NSDateFormatter_Class/Reference/Reference.html#//apple_ref/occ/clm/NSDateFormatter/dateFormatFromTemplate:options:locale:

“不同的区域设置对日期组件的排序有不同的约定。您可以使用此方法为指定区域设置的给定组件集获取适当的格式字符串(通常您使用当前区域设置 - 请参阅 currentLocale)。”

我认为如果您使用他们提供的示例,只需删除 y

NSString *dateComponents = @"yMMMMd";

它会给你一个字符串,没有给定语言环境的年份部分

【讨论】:

不幸的是,这是特定于桌面的,不适用于 iPhone 版本的 NSDateFormatter。 太糟糕了,这个解决方案本来是完美的!感谢 Eld 的回答。 抱歉,没注意到这个功能不适用于 iPhone =(【参考方案3】:

我找到了这个答案:Using NSDateFormatter on the iPhone, protect locale but lose date components

效果很好!

【讨论】:

【参考方案4】:

似乎 if/else 不足以完成捕获每个案例的任务。我会使用 NSDateFormatterLong 样式,然后只需查找/替换即可从字符串中删除年份。

【讨论】:

感谢 Ed 的回复。问题是年份可能不同。当然,我可以搜索 4 个数字并删除它们。在实施此 hack 之前,您确定没有更简单的解决方案吗? 读取 nicoko 的响应,它指的是从特定于语言环境的格式化字符串中删除年份的方法,而不是输出格式化的日期字符串。

以上是关于iPhone SDK - NSDateFormatter 日+月的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iOS 6 sdk 为 iPhone 4s 或 iPhone 4 制作视图控制器?

iPhone:Airplay SDK有啥用?

MAP 与 iPhone 3.0 SDK 一起使用都有哪些限制?

我在哪里可以获得 iPhone 2.0 SDK?

Iphone 4 sdk - 如何确定 applicationWillEnterForeground 是不是因通知而被触发?

在iPhone 3.0 SDK中改变了渐变技巧?