来自基于区域设置的设备的date格式
据我所知,date格式将根据区域设置而有所不同,有没有办法从当前date的设备的本地设置读取date格式?
- date格式是“dd / MM / yyyy”还是“MM / dd / yyyy”。
- 时间格式是“h:mm a”或其他。
- AM / PM文本是“AM”或“PM”。
我无法承受任何第三方库,请告诉我,这是否可以使用任何苹果类。
编辑:
我不想设置任何格式,我只想从基于语言环境的设备检索它。
说,在我的国家这里的date格式是dd / MM / yyyy这个词的某个部分,它的MM / dd / yyyy我想要这个格式。
任何答复表示赞赏。
我想,这只是一个简单的修复。 但在看到这个问题的一些很好的答案后,对此很好奇。 这是我的解决scheme。
您可以使用NSDateFormatter为此,将样式设置为所需的格式
NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle
要了解更多请看看文档
下面是你的片段。
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
它将使用用户的区域设置格式。 希望能解决你的问题。
你正在寻找的方法是+[NSDateFormatter dateFormatFromTemplate:options:locale:]
。
此方法专门用于将date格式“本地化”为所需的语言环境。
例如,如果您想知道用户的首选年,月,日格式,请执行以下操作:
NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"dMMMMy" options:0 locale:[NSLocale currentLocale]];
或者如果你想知道他们的首选时间格式,你可以:
NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]];
当你需要实际的格式string时,你使用这个方法。 如果你只想根据预定义的样式(长,满,中,短)格式化一个date,那么你可以使用其他几个答案中解释的常量。
您可以使用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];
-
date格式取决于你如何使用NSDateFormatter格式化你的date对象。 date没有格式,除非格式化。
date格式
NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle
或者使用你自己的格式
[dateFormatter setDateFormat:@"hh:mm dd.MM.yyyy"];
-
使用相同的date格式化程序也格式化时间
[dateFormatter setTimeStyle: NSDateFormatterShortStyle]
-
您可以将AM / PM符号设置为您想要的
[dateFormatter setAMSymbol:@"am"]; [dateFormatter setPMSymbol:@"pm"];
你可以使用以下方法获取当前的语言
NSLocale* currentLocale = [NSLocale currentLocale];
或者,您可以使用以下代码自定义date时间,例如:
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];