Цель C / iPhone - Как средство выбора даты и времени форматирует свои даты (например, полоски ГГГГ) и как получить эти форматы? - PullRequest
3 голосов
/ 04 октября 2010

При использовании средства выбора даты / времени на iPhone / iPad год (гггг) удаляется из форматирования даты, чтобы освободить место для времени.

Как это достигается на основе форматов Юникод по умолчанию, хранящихся в формате региона?

Форматы не обязательно соответствуют одному из следующих: NSDateFormatterLongStyle NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterFullStyle

Например, формат болгарского региона. Форматы (соответственно): дд ММММ у DD.MM.YY дД.ММ.ГГГГ дд мм у, EEE

и США: ММММ д, у М / д / гг МММ д, у EEEE, ММММ д, у

В болгарском меню выбора даты отображаются: например 06 10 сП

Где в Соединенных Штатах отображается: например Ср. Окт 06

Нет болгарского формата, в котором название дня стоит последним, равно как и формата, в котором название дня стоит первым в форматах США. Это заставляет меня задуматься о языках, где есть символы следующих лет и месяцев.

  • Как, черт возьми, сборщик даты разобрать год должным образом, учитывая форматирование информации доступно? И как он знает, где придерживаться название дня?
  • Существуют ли другие форматы дат? в операционной системе (на основе выбранный пользователем регион), что дата время выбора извлекает?

Самое главное, как мне получить эти форматы дат из локали?

Я не хочу просто вставлять какую-то строку специального формата - мне нужно извлечь существующие.

Спасибо!

Это следующий вопрос после того, как вы узнаете, как получить фактические форматы Unicode: Цель C / iPhone: как извлечь фактические строки формата даты в юникоде для текущего региона?

Ответы [ 2 ]

4 голосов
/ 04 октября 2010

Вы можете указать формат даты в виде строки, а затем вы можете получить относительно хорошие результаты. Например:

    NSDateFormatter *timeFormat = [[[NSDateFormatter alloc] init] autorelease];
    [timeFormat setDateFormat:@"HH:mm:ss"];
    NSString *theTime = [timeFormat stringFromDate:[datePickerView date]];

Разница лишь в том, что при использовании настроек США первый день - воскресенье, для ЕС - понедельник. но вы можете справиться с этим с помощью NSCalendar firstWeekDay. Надеюсь, это поможет.

a: AM / PM

A: 0 ~ 86399999 (миллисекунда дня)

1010 *

c / cc: 1 ~ 7 (день недели)

ccc: вс / пн / вт / ср / чт / пт / сб

cccc: воскресенье / понедельник / вторник / среда / четверг / пятница / суббота

1018 *

d: 1 ~ 31 (0 заполненных дней месяца)

D: 1 ~ 366 (0 заполненных дней в году)

1024 *

e: 1 ~ 7 (0 заполненных дней недели)

E ~ EEE: вс / пн / вт / ср / чт / пт / сб

EEEE: воскресенье / понедельник / вторник / среда / четверг / пятница / суббота

1032 *

F: 1 ~ 5 (0 заполненная неделя месяца, первый день недели = понедельник)

1036 *

г: юлианский номер дня (количество дней с 4713 г. до н.э. 1 января)

G ~ GGG: BC / AD (сокращенное обозначение эпохи)

ГГГГ: Перед Христом / Анно Домини

1044 *

ч: 1 ~ 12 (0 набранных часов (12 часов))

В: 0 ~ 23 (0 набранных часов (24 часа))

* * * Тысяча сорок-девять 1050 *

k: 1 ~ 24 (0 набранных часов (24 часа)

K: 0 ~ 11 (0 набранных часов (12 часов))

1056 *

L / LL: 1 ~ 12 (0 заполненных месяцев)

LLL: январь / февраль / март / апрель / май / июнь / июль / август / сентябрь / октябрь / ноябрь / декабрь

LLLL: январь / февраль / март / апрель / май / июнь / июль / август / сентябрь / октябрь / ноябрь / декабрь

1064 *

м: 0 ~ 59 (0 минут)

М / ММ: 1 ~ 12 (0 заполненных месяцев)

МММ: январь / февраль / март / апрель / май / июнь / июль / август / сентябрь / октябрь / ноябрь / декабрь

ММММ: январь / февраль / март / апрель / май / июнь / июль / август / сентябрь / октябрь / ноябрь / декабрь

1074 *

q / qq: 1 ~ 4 (0 набранных кварталов)

qqq: Q1 / Q2 / Q3 / Q4

qqqq: 1-й квартал / 2-й квартал / 3-й квартал / 4-й квартал

Q / QQ: 1 ~ 4 (четверть с добавлением 0)

QQQ: Q1 / Q2 / Q3 / Q4

QQQQ: 1 квартал / 2 квартал / 3 квартал / 4 квартал

1088 *

с: 0 ~ 59 (0 дополняется секундами)

S: (округленная до секунды)

1094 *

u: (0 дополненных Год)

1098 *

v ~ vvv: (Общее сокращение часового пояса по Гринвичу)

vvvv: (Общее имя часового пояса GMT)

1104 *

w: 1 ~ 53 (0 заполненная неделя года, 1-й день недели = воскресенье, NB: 1-я неделя года начинается с последнего воскресенья прошлого года)

W: 1 ~ 5 (0 заполненных недель месяца, 1-й день недели = воскресенье)

1110 *

г / гггг: (полный год)

гг / гг: (2 цифры года)

Г / ГГГГ: (полный год, начиная с воскресенья первой недели года)

ГГ / ГГГ: (двухзначный год, начиная с воскресенья первой недели года)

1120 *

z ~ zzz: (Аббревиатура часового пояса по Гринвичу)

zzzz: (название часового пояса по Гринвичу)

Z: +0000 (часовой пояс RFC 822)

2 голосов
/ 05 октября 2010

Существуют ли в операционной системе другие форматы даты (основанные на выбранном пользователем регионе), которые извлекает средство выбора даты?

Да.Из документации класса UIDatePicker для локального свойства :

Значение по умолчанию равно nil.который сообщает средству выбора даты использовать текущий языковой стандарт, возвращаемый currentLocale (NSLocale) или языковым стандартом, используемым в календаре средства выбора даты.Локали инкапсулируют информацию о фасетах языка или культуры, например, форматирование дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...