来自基于区域设置的设备的date格式

据我所知,date格式将根据区域设置而有所不同,有没有办法从当前date的设备的本地设置读取date格式?

  1. date格式是“dd / MM / yyyy”还是“MM / dd / yyyy”。
  2. 时间格式是“h:mm a”或其他。
  3. 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]; 
  1. date格式取决于你如何使用NSDateFormatter格式化你的date对象。 date没有格式,除非格式化。

    date格式

     NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle 

    或者使用你自己的格式

     [dateFormatter setDateFormat:@"hh:mm dd.MM.yyyy"]; 
  2. 使用相同的date格式化程序也格式化时间

      [dateFormatter setTimeStyle: NSDateFormatterShortStyle] 
  3. 您可以将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];