Фильтр дат для 30 января, 31 с февраля-01 не работает с использованием javascript
Привет,
Я хотел бы отфильтровать fromDate и toDate.
когда я делаю поиск с fromDate как Jan-30-2017 и toDate как Feb-01-2017, он показывает сообщение "ToDate "не может быть меньше, чем"FromDate".
Примечание:
Senario 1: для каждого года ищите особенно с 30 января по 01 февраля.
Senario 2: для каждого года ищите особенно с 31 января по 01 февраля.
В других случаях работает нормально.
ValidateDate(fromDate,toDate){ var pDay=parseInt(toDtae.substring(0,2),10); var pMon=parseInt(toDtae.substring(0,2),10); var pYear=parseInt(toDtae.substring(0,2),10); var pDate=new Date(pYear,pMon,pDay); var oDay=parseInt(toDtae.substring(0,2),10); var oMon=parseInt(toDtae.substring(0,2),10); var oYear=parseInt(toDtae.substring(0,2),10); var oDate=new Date(oYear,oMon,oDay); if(pDate<oDate){ confirm('<s:Text name="labe.dateerrorMessage"/>') documentation("okButton").disabled=true; } }
всякий раз, когда я ищу с 30/31 января по 01 февраля каждый год, он показывает
"ToDate" не может быть меньше, чем "FromDate".
Пример: fromDate:jan302017
обновлена:Feb012017
отбор происходит через каландр.
Что я уже пробовал:
ValidateDate(fromDate,toDate){ var pDay=parseInt(toDtae.substring(0,2),10); var pMon=parseInt(toDtae.substring(0,2),10); var pYear=parseInt(toDtae.substring(0,2),10); var pDate=new Date(pYear,pMon,pDay); var oDay=parseInt(toDtae.substring(0,2),10); var oMon=parseInt(toDtae.substring(0,2),10); var oYear=parseInt(toDtae.substring(0,2),10); var oDate=new Date(oYear,oMon,oDay); if(pDate<oDate){ confirm('<s:Text name="labe.dateerrorMessage"/>') documentation("okButton").disabled=true; } }
Nathan Minier
Итак...вы заметили, что анализируете одну и ту же вещь (toDtae), которая не является событием одной из переменных, переданных в функцию, и что ваш выбор оператора игнорирует случай равенства, верно?
CHill60
Это будет решением :-)
Nathan Minier
В этом случае я иду с "может быть".Вы заметите, что каждая функция parseint также применяется к одной и той же подстроке. В принципе, нет ничего правильного.
CHill60
Это очень вежливое описание того, что не так с кодом.
Jochen Arndt
Кроме уже упомянутых ошибок при разборе всегда одни и те же символы для всех частей даты:
По возможности не используйте строки для операций с датой.
Вместо этого используйте собственные типы date, time и datetime.
Создавайте строки только для их отображения. Если вам нужно разобрать строки, содержащие даты, убедитесь, что вы знаете используемый формат.
Это значительно упростит работу с датами и позволит избежать ошибок преобразования.