![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| href |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 25.10.2006 Где: Moscow Репутация: нет Всего: нет |
Как определить средствами JavaScript краткую форму формата даты, установленного в системе у пользователя?
Например, в России принят формат 25.11.2006, тогда как для США актуален 11/25/2006. |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
В разных браузерах, говорят, по-разному работает toLocaleString() . В Win "в лоб" не получается. Но "по лбу" - (IE):
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
На правах безумной идеи: что, если сделать toLocaleString() для сегодняшней даты, а потом попытаться распрасить результат - найти в нем позицию сегодняшних числа, месяца и года, соответственно все оставшееся - разделители. Если результат неоднозначен (скажем, 06.06.2006) - берем завтрашнюю дату и делаем то же самое, если даже тогда неоднозначность не пропала (напр. 06.06.06 - кстати, так бывает?) - берем дату через год и однозначно определяем последний элемент... Есть подводные камни?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Stampede |
|
||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
Вопрос: для чего это нужно и в каком виде предполагается получит формат. Если, например, нужно что-то вида "dd.MM.yyyy"? то я бы применил способ, предложенный SelenIT. Единственное, я бы использовал не текущую, а некую фиксированную контрольную дату, например 25.11.2006. Кстати, чтобы не совать вычисленный формат во всякие случайные переменные, можно оформить его как свойство типа Date:
А еще советую почитать описание одного интересного подхода к форматированию дат в JavaScript'е, который оформлен в виде LGPL библиотеки Xaprb. На этом же сайте автор, Baron Schwartz, приводит результаты бенчмарка пяти разных баблиотек, так или иначе позволяющих форматировать даты. И хотя мы все знаем, что бывает просто ложь, наглая ложь и бенчмарки, но все равно результаты выходят интересные ^) -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||
|
|||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
SelenIT, Stampede, вы о чём-то не о том, случайно, оба под не-Win сидите?
В WinXP проблема в том, что toLocaleString() даёт полный формат даты, а нужен сокращённый, который хранится в локалях системы и мог быть установлен пользователем. У меня строчка моего примера даёт (для моих настроек локали):
|
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
||||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Опять же, в VBS есть GetLocale - SetLocale.
|
|||
|
||||
| href |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 25.10.2006 Где: Moscow Репутация: нет Всего: нет |
В общем, получился коротенький скриптик.
|
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
??? А зачем? Форматов локалей всё равно намного больше. Например, "25 декабря 1980", "25дек80".
|
|||
|
||||
| href |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 25.10.2006 Где: Moscow Репутация: нет Всего: нет |
Я так понимаю, "локали", это в VBS? К сожалению, он не подходит, потому как хочется, чтобы скрипт наботал не только в IE. В любом случае спасибо. |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Локалью называется совокупность настроек пользователя в системе, связанная с языком и национальностью. Раскладки, форматы дат, чисел, язык. Это системное понятие, описывается числом или строчкой типа "ru", "en-us". Может корректироваться юзером в системе. VBS может читать варианты форматов, а JS выдаёт один. Но вопрос в другом - тот, который Вы использовали, есть формат развёрнутой даты, а распознать пытаетесь краткий формат и только русский. Зачем закладывать заведомую ошибку?
Добавлено @ 19:13 (Поиск по и-нету по слову "locale") |
|||
|
||||
| href |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 25.10.2006 Где: Moscow Репутация: нет Всего: нет |
К сожалению, способа получения краткого формата без использования VBS пока не нашёл, потому и используется полный формат. В полном формате тот же порядок следования числа, месяца и года, что и в кратком. Разделители, к сожалению, из полного формата получить невозможно. Принцип работает не только для "русского" формата, но для любого возвращаемого системой. |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Принцип? По умолчанию - может быть, хотя вне компьютеров не всегда ("6th of December"), но пользователь может поставить какой угодно формат через строку формата в системе.
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |