2013-05-10 3 views
3

Насколько мне известно, формат даты будет зависеть от locale, Есть ли способ прочитать формат даты с локальных настроек устройства для текущей даты?Форматы дат с устройства на основе locale

  1. Должен ли формат даты «dd/MM/yyyy» или «MM/dd/yyyy».
  2. Формат времени: «h: mm a» или что-то еще.
  3. Текст AM/PM - «AM» или «PM».

Я не могу себе позволить какие-либо сторонние библиотеки, пожалуйста, скажите, можно ли это сделать с помощью любых классов Apple.

Отредактировано:

Я не хочу, чтобы установить любые форматы, я просто хочу, чтобы извлечь его из устройства, основанного на местности.

скажем, здесь, в моей стране, формат даты - dd/MM/yyyy в некоторой части слова его MM/dd/yyyy. Я хочу получить этот формат.

Любой ответ приветствуется.

+7

Используйте NSDateFormatter, установите стиль, он должен использовать локальные форматы пользователя. Удачи. – Krishanbhag

ответ

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 

он будет использовать языковые форматы пользователя. Надеюсь, что решает вашу проблему.

+1

Это был тот ответ, который я искал. спасибо ману .. !!! – Jacob

0

Чтобы достичь этого, вы можете использовать DateStyle и timeStyle для NSDateFormatter.

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]; 
+0

@Downvoter Было бы неплохо узнать, что было не так в этом ответе. – Anupdas

+0

Я чувствую, что ответ не имеет ничего плохого, любопытно узнать, почему он проголосовал. Но в отношении моего вопроса мне не нужна датаString, мне просто нужны форматы. – Jacob

0
  1. формат дата зависит от того, как вы форматирования объекта даты с помощью NSDateFormatter. Дата не имеет формата, если вы не форматируете его.

    Дата форматы

    NSDateFormatterShortStyle 
    NSDateFormatterMediumStyle 
    NSDateFormatterLongStyle 
    

    или использовать свой собственный формат

    [dateFormatter setDateFormat:@"hh:mm dd.MM.yyyy"]; 
    
  2. Используйте ту же дату форматирования для форматирования времени также

    [dateFormatter setTimeStyle: NSDateFormatterShortStyle]  
    
  3. Вы можете установить Символ AM/PM как то, что ev эр вы хотите

    [dateFormatter setAMSymbol:@"am"]; 
        [dateFormatter setPMSymbol:@"pm"]; 
    
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]; 
9

метод вы ищете +[NSDateFormatter dateFormatFromTemplate:options:locale:].

Этот метод является конкретно для «локализации» формата даты в желаемый язык.

Например, если вы хотите знать, предпочтительный формат год-месяц-день пользователя, вы делаете:

NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"dMMMMy" options:0 locale:[NSLocale currentLocale]]; 

Или, если вы хотите знать, предпочитаемый формат времени, вы делаете:

NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]]; 

Вы используете этот метод, когда вам нужно фактическую строку формата. Если вы просто хотите отформатировать дату в соответствии с предопределенными стилями (длинным, полным, средним, коротким), то вы используете константы, как объяснено в двух других ответах.

Смежные вопросы