Spirit
|
|
1 | |
Формат даты в приложении22.07.2009, 17:24. Показов 1879. Ответов 8
Метки нет (Все метки)
Кто подскажет, можно ли на VB для своего приложения установить определенный формат для даты, например ShortDate, при этом не меняя системные настройки? Буду очень признателен за помощь.
|
22.07.2009, 17:24 | |
Ответы с готовыми решениями:
8
Как изменять формат даты VB? Как определить локальный формат даты? Независимость от локальных настроек системы (разделитель, формат даты). Возможно? Формат даты |
Comanche
|
|
22.07.2009, 18:55 | 2 |
Нет. Но есть VB-функция Format().
|
Spirit
|
|
23.07.2009, 10:46 | 3 |
Format() - это конечно хорошо, но на выходе она дает строку, а мне необходима дата (для сравнения).
|
Irokez
|
|
23.07.2009, 11:05 | 4 |
можно сделать так:
применить Format к обоим входящим датам, а потом CDate преобразовать обратно в дату и сравнивать. Я сам не проверял, но думаю, должно сработать. |
Spirit
|
|
23.07.2009, 11:24 | 5 |
Имеем, например, в системных установках формат даты: 'гггг-ММ-дд'.
При попытке выполнить СDate(Format(MD,'dd.mm.yyyy')), вылезает ошибка 'Несоответствие типов'. Проверено. Может есть другой путь, а я не понимаю. Напишу конкретней. Создал свой ActiveX Calendar. Все написано, кроме реакции на формат даты отличный от 'dd.mm.yyyy'. Если пытаться писать редактирование всех возможных форматов даты (а их можна придумать кучу) - это не реально. Вот мне и надо, чтобы при инициализации элемента устанавливался один формат. Со строками все хорошо, но мне нужен тип 'Дата', а при попытке преобразовать VB пытается использовать системный формат Что я не правильно делаю? |
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 26
|
|
23.07.2009, 15:13 | 6 |
Мне кажется, не стоит пользоватся 'зашитом в коде' форматом даты,
лучше использовать системные установки формата даты. -- API -- GetUserDefaultLCID - локальный контекст GetLocaleInfo - подробная информация о локальном контексте
0
|
Spirit
|
|
23.07.2009, 15:32 | 7 |
Я смотрел эти функции - они только получают инфу. Нужный контекст и системный формат даты я могу и из реестра получить. Проблема не в получении этой информации. Что толку если я получу формат даты 'm-dd-y'? Мне надо чтобы мой ActiveX работал только с форматом 'dd.mm.yyyy' не зависимо от того, как пользователь захочет извратиться над форматом.
Все было бы просто, если результатом выражения CDate('dd.mm.yyyy') была бы получена дата в том самом системном формате 'm-dd-y'. НО, VB ругается и говорит о несответствии типов |
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
|
|
23.07.2009, 16:39 | 8 |
Используй DateSerial для создания даты и DateDiff для сравнения дат.
0
|
Spirit
|
|
23.07.2009, 16:58 | 9 |
DateSerial, DateDiff подходят, но я думаю получится корявенько.
Решение найдено такое: всем переменным, константам, значениям свойств оставить тип 'Date', а изменить лишь отображение даты в поле контрола, написав соответственно функцию перевода в нужный формат (буквально пару строк). Спасибо всем, кто откликнулся, за помощь и за желание помочь. Вопрос снят. |
23.07.2009, 16:58 | |
23.07.2009, 16:58 | |
Помогаю со студенческими работами здесь
9
Формат времени и даты Формат даты в VBA Формат даты (американский и не очень) Неверно распознается формат даты Задать собственный формат даты Неправильный формат даты в автофильтре Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |