סינון מותאם אישית בdatatables
-
במקרה הזה: https://jsfiddle.net/d7zx80as/1/
כשאני שם תאריך לסינון, משום מה מוצגים 2732 רשומות מתוך 5,389. -
@dovid אמר בסינון מותאם אישית בdatatables:
@chagold התאריכים בדוגמה שלך הם בפורמט לא סטנדרטי (yyyy/mm/dd).
מפריע לך שהם יהיו בפורמט הקלאסי של dd/mm/yyyy (בדיוק הפוך)?
נראה לי שזה יסדר את הבעיה בלי צורך בקוד נוסף.@dovid חבל שלא היית בוועדת ההיגוי של השפה... כי גם אני סבור כמוך אבל למעשה נראה שזה בדיוק הפוך.
yyyy/mm/dd
ו-mm/dd/yyyy
הם חוקיים, אבלdd/mm/yyyy
לא חוקי...var options = { year: 'numeric', month: 'long', day: 'numeric' } new Date('01/12/2020').toLocaleDateString('en-uk', options) // "January 12, 2020" new Date('12/01/2020').toLocaleDateString('en-uk', options) // "December 1, 2020" new Date('13/01/2020').toLocaleDateString('en-uk', options) // "Invalid Date" new Date('2020/12/01').toLocaleDateString('en-uk', options) // "December 1, 2020"
@chagold לעניינך, יוצא שיש לך מחרוזות תאריך ש-
Date.parse
לא יודעת לפרסר (כאשר ה"יום" - שמפורסר כחודש - הוא מ-13 ומעלה), לכן הם מחזיריםNaN
.
מכיון ש:NaN <= NaN //false NaN <= 1 //false 1 <= NaN //false
לכן כל רשומה שה"יום" הוא מ-13+ מחזיר
false
. -
@yossiz אח"כ שמתי לב לזה, אבל כבר לא היה לי כח כי תוסכלתי מהמרחק בין התיעוד לבין התוצאות שעלו לי בנסיונות.
כנראה זה משוגה שלי אבל בפועל כל מה שהם כתבו לא עבהד לי, למשל הם כותבים שמרבית הפלאגינים הם אוטמטיים בגלל פלאגין של autodetect ובפועל כלום לא היה לי אוטומטי, כמו"כ הם שמים את קוד date-euro שלא מפסיק התבוננתי בו אבל הוא פשוט לא עבד לי, בקיצור לא היה לי "עצבים"... -
טוב, אני מרגיש בחברה של גדולים כשהבאגים שלי לא ניתנים לפיתרון...
מה שלא יעזור לי בנוגע ללקוח שלי...
יש מה לעשות בענין?או אולי - לא הבנתי (בכ"א במבט ראשון) איזה תנאי אני עושה לקלוט את הימים מעל 13 כדי להחזיר אותם לtrue?
@dovid ן @yossiz תודה עצומה על הנסיונות לפתור ולהתמודד לא רק עם קוד אלא גם עם שגיאות מעצבנות..
-
@chagold אמר בסינון מותאם אישית בdatatables:
הבאגים שלי לא ניתנים לפיתרון
למה לא ניתנים לפיתרון?
הפתרון פשוט להביא את התאריך ל-Date.parse
בפורמט הנכון.
אפשר להוסיף שורה זו להחליף את היום והחודש:coldate = coldate.replace(/^(..\/)(..\/)/, '$2$1');
עריכה: אני רואה שהשימוש ב-
Date.parse
הוא קצת בעייתי לשימוש בצורה חוצה דפדפנים כי אין כללים ברורים איך אמורים לפרסר את התאריך. הפורמט היחיד שמוגדר ב-ES5 הואyyyy-mm-dd
. יש ספרייה בשם moment.js עבור פרסור תאריכים.
עיין עוד:
https://stackoverflow.com/questions/51715259/what-are-valid-date-time-strings-in-javascript/
http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html