powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Функция Month(Date) возвращает разные значения.
25 сообщений из 49, страница 1 из 2
Функция Month(Date) возвращает разные значения.
    #38606296
Добрый вечер, объясните чайнику, почему в окне отладки

? month(#03/02/2016#) равно 3 - я ожидал 2-ку, а
? month(#01/02/2016#) равно 1, опять же должно вернуться 2-ка
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606304
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Коротковопять же должноникто никому ничего не должен. <censored>-американцы сначала пишут месяц, потом число, потом год
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606332
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
?month("03.02.2016")
 2 
?month("01/02/2016")
 2 
Но это только на русской локали. С решетками будет работать на любой локали.
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606364
Спасибо за ответы .... запутался я в этих датах. В одних случаях дата берется из текстового поля, в других - как результат извлечения из базы данных и везде нужно преобразовывать в нужный формат
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606369
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из текстового поля нужно преобразовывать с помощью CDate в дату
из БД вообще не надо трогать, она уже в виде даты
#03/02/2016# - это тоже уже дата - ее тоже преобразовывать не надо

самый безопасный формат даты: yyyy-mm-dd - в нем не возникает путаницы с месяцем
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606380
Хорошо, спрошу еще, раз формат американский, то почему не возникает ошибки:

? month(#13/01/2014#) - возвращает 1, а ведь должно вернуть "несуществующий" 13 месяц?
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606443
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если литерал допускает дуальное толкование - считается, что первым идёт месяц. Если однозначен - то как имеет смысл интерпретировать.
А вот ... как думаешь, что даст date(#13/14/2014#) ? А потом проверь...
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606455
AkinaЕсли литерал допускает дуальное толкование - считается, что первым идёт месяц. Если однозначен - то как имеет смысл интерпретировать.
А вот ... как думаешь, что даст date(#13/14/2014#) ? А потом проверь...
Это в политике можно толковать, как вздумается ... а тут должно быть все строго ... раз первым идет месяц, значит должна быть ошибка на первое число в дате, если оно больше 12.
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606461
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так или иначе, единственное применение такой записи - это константа - это используется нечасто и ты ее записываешь сам - всегда пиши месяц первым - неоднозначности не будет.
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606471
Хорошо, получается, что в окне отладки я должен использовать дату как строку, тогда вопросов не возникает

? Month("03/02/2014")
2

Ладно, пойду повешусь :)
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606474
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Коротков? Month("03/02/2014")Вот в ЭТОМ случае как раз и возникает вопрос - результат будет зависеть от того, какой у вас формат даты в виндах, в интернациональных настройках.

Как я уже говорил - вот так:
?month("2001-05-06")
неоднозначности не будет
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606487
но в такой формат ("2001-05-06") нужно будет каждый раз переводить параметр, прежде чем передавать его в некую пользовательскую функцию?
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606516
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть ощущение что вы путаете типы данных - строку и дату (String и Date)
у Date НЕТ И НЕ МОЖЕТ НИКАКОГО ФОРМАТА - это просто число, если вы получаете откуда-то некий тип данных (например из базы из поля типа Date) и передаете его в функцию, который принимает параметр типа Date, вообще не требуется думать ни о каких преобразованиях - их нет.

Формат возникает только в тот момент, когда вы превращаете дату в строку (например при выводе на экран) или наоборот, когда пользователь вводит дату с клавиатуры - вот только тогда есть необходимость задумываться о том, где расположен месяц. В типе Date понятия "положение месяца" просто НЕТ - это число, обозначающее количество дней, прошедших с 1900-01-01 (кажется).
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606554
Shocker.ProУ меня есть ощущение что вы путаете типы данных
Пожалуй да, в голове пока каша ... хотя начинаю понимать вашу мысль ....
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606559
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если приведете примеры своего кода и что вы хотите куда передать - можно будет показать на конкретном примере
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606595
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр КоротковЭто в политике можно толковать, как вздумается ... а тут должно быть все строго ... раз первым идет месяц, значит должна быть ошибка на первое число в дате, если оно больше 12.
Не понял... ко мне какие претензии? не я реализацию функции писАл... кстати, всё и есть строго - результат детерминированный? да... чего ещё надо? а если кто-то умом не охватил - его проблемы.

Shocker.ProУ меня есть ощущение что вы путаете типы данных - строку и дату (String и Date)
Есть ещё третья ипостась - литерал даты. Нечто из разряда полу-тут-полу-там, типа нет, а значение есть... весёлый такой зверёк.
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606687
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЕсть ещё третья ипостась - литерал даты. Нечто из разряда полу-тут-полу-там, типа нет, а значение есть... весёлый такой зверёк.чёй-то типа нет. Все тот же тип - Date
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606784
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProАлександр Коротковопять же должноникто никому ничего не должен. <censored>-американцы сначала пишут месяц, потом число, потом год

Не так давно так писали и на Руси, чтобы в этом убедиться, достаточно почитать письма <censored>-Гоголя.
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606850
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, и мерили в пядях, саженях и верстах, пудах и фунтах
Однако стандартизация взяла верх во всех странах... кроме некоторых
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606875
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит не во всех. Да и стандарт, оказывается, дело относительное. Там он один, а где-то там он другой. Так принято, и это хорошо, потому что это означает разнообразие и занятость. И первый день недели не везде понедельник, кстати, и Цельсий не везде рулит.
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606929
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45И первый день недели не везде понедельник, кстати, и Цельсий не везде рулит.примерно в тех же странах, где мили, фунты и месяц пишется впереди ))
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38606992
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне так кажется, это далеко не последние страны. По-крайней мере это те страны, без которых этот форум просто бы не существовал. Так что, чей стандарт стандартнее, еще надо посмотреть.
:)
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38607021
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я считаю, что тот стандарт стандартнее, где единицы того же смысла переводятся друг в друга путем умножения на степень 10, а не какое-то произвольное число, и даты записываются в порядке увеличения или уменьшения детализации (интересно, а почему у них время не показывается как ММ:ЧЧ:СС - логичнее для них было бы)
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38607028
Спасибо всем, к Зеленограду претензий не имею :)
Вообще, мне нужно написать некую функцию, типа Double, которая принимает три параметра:
начальную дату DateStart;
конечную дату DateEnd;
номер месяца iMonth.
Параметр iMonth должен попадать в диапазон номеров месяцев начальной и конечной дат. Т.е. iMonth >= Month(DateStart) And iMonth <= Month(DateEnd). В противном случае возвращаем 0

Функция возвращает "какую часть" занимает указанный диапазон дат по отношению к длительности номера переданного месяца, например:
fnX("2014-01-12","2014-03-23",1)=0.64516
fnX("2014-01-12","2014-03-23",2)=1
fnX("2014-01-12","2014-03-23",3)=0.7666

Для чего это нужно? Есть ежемесячный плановый показатель "Сколько больных должно быть пролечено". План утверждается на год, число пролеченных каждый месяц немного меняется. Врач знает сколько он пролечил реально за некий период (между DateStart и DateEnd) он хочет знать - а сколько это в процентах от плана. Если бы диапазон дат начинался календарным началом и заканчивался календарным концом месяца - тут нет проблем. Я конечно изваял нечто, но страшно показывать ....
...
Рейтинг: 0 / 0
Функция Month(Date) возвращает разные значения.
    #38607036
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно, не очень важно, что делает сама функция, важно, откуда вы берете данные и как вы их передаете в функцию
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Функция Month(Date) возвращает разные значения.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]