据我所知,日期格式会因地区而异, 有没有办法从当前日期的设备本地设置中读取日期格式?
我买不起任何第三方图书馆,请告诉我这是否可以使用任何苹果课程。
编辑:
我不想设置任何格式,我只想根据区域设置从设备中检索它。
说,在我的国家,日期格式是dd / MM / yyyy,在MM / dd / yyyy这个词的某些部分,我希望得到这种格式。
感谢任何回答。
答案 0 :(得分:11)
您正在寻找的方法是+[NSDateFormatter dateFormatFromTemplate:options:locale:]
。
此方法具体,用于将日期格式“本地化”为所需的区域设置。
例如,如果您想知道用户首选的年 - 月 - 日格式,请执行以下操作:
NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"dMMMMy" options:0 locale:[NSLocale currentLocale]];
或者如果你想知道他们喜欢的时间格式,你可以:
NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]];
当您需要实际格式字符串时,可以使用此方法。如果您只想根据预定义的样式(长,全,中,短)格式化日期,那么您可以使用常量,如其他几个答案所述。
答案 1 :(得分:8)
我想,这只是一个简单的修复。但是看到这个问题的一些很酷的答案,对此感到好奇。这是我的解决方案。
您可以使用NSDateFormatter,将样式设置为所需的格式
NSDateFormatterShortStyle
NSDateFormatterMediumStyle
NSDateFormatterLongStyle
要了解更多信息,请查看documentation
以下是适合您的代码段。
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSString *dateformat = [dateFormatter dateFormat]; //M/d/yy
NSString *amtext = [dateFormatter AMSymbol]; //AM
NSString *pmtext = [dateFormatter PMSymbol]; //PM
dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *timeformat = [dateFormatter dateFormat]; //h:mm a
它将使用用户的语言环境格式。希望能解决你的问题。
答案 2 :(得分:1)
您可以使用NSDateFormatter的dateStyle和timeStyle来实现此目的。
NSDateFormatter *dateFormatter = [NSDateFormatter new];
//Only set what you want to show, if you set both, both will be included in the converted string
//This would be like dd/MM/yyyy depending on your locale
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
//This would be in hh:mm a
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
//Assuming you have a date instance already in hand
NSString *dateString = [dateFormatter stringFromDate:date];
答案 3 :(得分:1)
日期格式取决于您使用 NSDateFormatter 格式化日期对象的方式。除非您格式化日期,否则日期没有格式。
日期格式
NSDateFormatterShortStyle
NSDateFormatterMediumStyle
NSDateFormatterLongStyle
或使用您自己的格式
[dateFormatter setDateFormat:@"hh:mm dd.MM.yyyy"];
使用相同的日期格式化程序格式化时间
[dateFormatter setTimeStyle: NSDateFormatterShortStyle]
您可以将AM / PM符号设置为您想要的
[dateFormatter setAMSymbol:@"am"];
[dateFormatter setPMSymbol:@"pm"];
答案 4 :(得分:0)
您可以使用以下方式获取当前区域设置:
NSLocale* currentLocale = [NSLocale currentLocale];
或者您可以使用以下代码自定义日期时间,例如:
NSDate * date = [m_DateTimePicker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//dd for date, MMMM: month, yyyy:year hh: hour, mm: minute a: AM/PM
[dateFormatter setDateFormat:@"dd MMMM yyyy hh:mm a"];
NSString *convertedString = [dateFormatter stringFromDate:date];