问题描述
这是一个有点棘手的问题。我在iPhone上使用NSDateFormatter,但我只想显示没有年份组件的标准日期。但保留用户区域设置格式的日期。
This is a slightly tricky question. I am using NSDateFormatter on the iPhone but I wanted to only show a standard date without the years component. But retain the users locale formatting for their date.
我可以使用
[dateFormatter setDateFormat:@"h:mma EEEE MMMM d"]; // hurl.ws/43p9 (date formatting)
但是现在日期是我的in- nz格式例如7月7日星期三下午12:01所以我完全杀死了世界上任何其他用户的语言环境。
But now the date is in my in en-nz format eg 12:01PM Wednesday July 7. So I have totally killed the locale for any other users around the world.
我想说。
由于日期显示为字符串,我很想将日期归结为日期,然后通过将其从字符串中删除来删除年份组件。
Since the date is being displayed as string, I am tempted to just fromat the date and then remove the year component by just cutting this out of the string.
推荐答案
您可以尝试以下方式:
//create a date formatter with standard locale, then:
// have to set a date style before dateFormat will give you a string back
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
// read out the format string
NSString *format = [dateFormatter dateFormat];
format = [format stringByReplacingOccurrencesOfString:@"y" withString:@""];
[dateFormatter setDateFormat:format];
有点黑客,但它应该有效。
Kind of a hack, but it should work.
编辑:您可能希望删除字符串的出现次数 @y,
和 @y
首先,如果你最后得到一些时髦的额外空格或逗号。
You may want to remove occurrences of the strings @"y,"
and @" y"
first, in case you end up with some funky extra spaces or commas.
这篇关于在iPhone上使用NSDateFormatter,保护语言环境但丢失日期组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!