כשהיום מתארך ל25 ו26 שעות או יותר..
-
יש לי טבלת נתונים נקרא לזה טבלת תורים.
התורים מתחילים בשעות אחה"צ ערב עד לסיום הביקוש להיום.
הכל ממוין ומסודר ומטופל ברמה יומית לפי תאריך לועזי, ולאחר מכן לפי שעה.
האתגר הוא איך אני מתמודד כאשר יש עומס של תורים ואני אמור להוסיף עוד ועוד תורים אשר מתארכים לאחר 12 בלילה.
זה מתבטא בכמה נקודות, מקווה שאני זוכר/לוקח בחשבון את כולם.- בתצוגה בממשק כשהנתונים מסוננים ברמה יומית עלי לשמור אותם לפי התאריך של יום העבר, כי אחרת הם יוצגו רק ביום הבא כתורים הראשונים, וכן בכל שאר הפעולות שתלויות בתאריך של היום החולף אני רוצה אותם בתוך היום החולף, וא"כ עלי לשמור אותם לתאריך של היום הנוכחי-החולף.
הבעיה היא שהמיון שהוא לפי שעות מתערבב, כי דבר ראשון יוצגו בממשק התורים האחרונים ולאחר מכן דהיינו מ0 עד נניח 1-2, ואחריהם יוצגו התורים של אחה"צ המתחילים ב18 ואילך. - בעת הרישום במערכת אני נותן לנרשם 4 אפשרויות.
א. התור הראשון הפנוי.
ב. התור האחרון הפנוי.
ג. רשימת התורים הפנויים לפי הסדר.
ד. הקשת שעה מבוקשת ושליפת השעה הקרובה לשעה הרצויה.
כנ"ל אם אני שומר את כל התורים של היום לתאריך הלועזי של היום החולף ולא היום הבא, זה יוצר לי בלאגן בשליפת התור הראשון הפנוי (שכהיום הוא מגיע מתוצאה של מיון לפי שעות עולה), בעיה בתור האחרון, בעיה בסדר הרשימה של השעות הפנויות, ובעיה בשליפת השער הקרובה ליעד כי הרשימה תציג תמיד טווח שעות מ0עד 24 במקום טווח של 18 עד 02.
אני חשבתי על פתרון שבמקום לשמור את השעה בשדה מסוג time (מדובר ב mysql) אני ישמור כטקסט, ואז אני ממשיך את התורים לשעה 24:30 ו25:15 וכו'.
כאשר 25:15 מתורגם ל 01:15 שזה יתבטא מבחינתי: - בממשק הניהול אני מחליף בתצוגה את 25 ל1 וכו'.
- בעת השמעת התורים/התור האחרון אני ישמיע/יציג לאחר המרה כנ"ל 25 = 1.
- ואותו דבר בעת הקשת שעה שאני מחזיר את השעה הקרובה ליעד אני מחפש לפי מספר עולה, ורק בתצוגה/השמעה אני ממיר את התוצאות שלאחר 12 בלילה ל1 ו2 וכו'.
אשמח לחוות דעתכם האם זו הדרך הנכונה?
האם יש דרך יותר טובה?
אולי כן לשמור לפי התאריך של היום הבא ולטפל בבעיות הנ"ל (ושיצוצו) בצורה נקודתית.
מה אתם הייתם עושים?
- בתצוגה בממשק כשהנתונים מסוננים ברמה יומית עלי לשמור אותם לפי התאריך של יום העבר, כי אחרת הם יוצגו רק ביום הבא כתורים הראשונים, וכן בכל שאר הפעולות שתלויות בתאריך של היום החולף אני רוצה אותם בתוך היום החולף, וא"כ עלי לשמור אותם לתאריך של היום הנוכחי-החולף.
-
@חוקר אני נגד להמציא את הגלגל באופן כללי.
ליצור שעה כמו 25:15 נשמע לי מתכון להרבה מאוד צרות.אני הייתי משתמש בגישה הבאה:
עבור כל תור היתי שומר את- שעת ההתחלה כולל תאריך (DateTime)
- משך התור בדקות.
בעת הרישום במערכת הייתי מחשב (על פי נתונים הנ"ל) את כל התורים הפנויים בטבלה (אפשרות ג) וממילא הרווחתי בקלות גם את אפשרויות א,ב.
גם אפשרות ד קלה מאוד בהנתן הטבלה הנ"ל. -
@חוקר
לא הבנתי מה הבעיה לשמור יחד עם התאריך, מה שישמור על הסדר הנכון בכל המקומות, תצוגה, קריאה וכו'
ואם יש לך איזשהו ענין לדעת שכל החבילה הזו שייכת ליום החולף תסמן את זה בשדה אחר באיזו שהיא צורה עם נתון שמתאפס / מתקדם בכל בוקר או צהריים וכדו'
כלל ברזל בתכנון וארכיטקטורת מסדי נתונים שלמדתי מפי מומחים: תמיד לנסות כמה שיותר להצמד לאמת הפשוטה! כמה פשוט, ככה חכם! -
-
רק א"כ אשמח לדעת איך אני ממיין מערך על פי עמודת תאריך ושעה?
לכאורה JS יודע להמיר אותו לערך מספרי ולמיין אותו, נכון?
כמו"כ לגבי הנושא של שליפת שעה סמוכה לשעה הרצויה איך אתמודד עם זה? אולי להמיר את התאריכים המלאים לחתימות זמן וכן את השעה המבוקשת לחתימת זמן וכך אוכל לבקש את התוצאה הנכונה הסמוכה לתאריך המבוקש?
ובעיה נוספת, היות שבממשק אני אמור להציג את השעה בעמודה ללא התאריך (זה מאוד יסרבל), מה עדיף? להוסיף עמודה נוספת המכילה את השעה בלבד? או בעת הרנדור של הHTML לחתוך את התאריך או מה? -
@חוקר אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
JS יודע להמיר אותו לערך מספרי ולמיין אותו
לדעתי שמור אותו מלכתחילה כערך מספרי
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime -
@אהרן אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
@חוקר אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
JS יודע להמיר אותו לערך מספרי ולמיין אותו
לדעתי שמור אותו מלכתחילה כערך מספרי
זו סתם שאלה עקרונית בלי קשר, האם לשמור נתונים כתאריך ושעה או כתחימת זמן יוניקס.
במקרה כאם אני חושב שאכן מספיק זמן יוניקס, רק שאצטרך תזכורת בעד 18 שנה יחד עם כל שאר המתכנתים שמשתמשים בשיטה זו, לראות איך מתמודדים את התאריך לאחר 2038-01-09 03:14:07 -
@חוקר אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
רק א"כ אשמח לדעת איך אני ממיין מערך על פי עמודת תאריך ושעה?
לכאורה JS יודע להמיר אותו לערך מספרי ולמיין אותו, נכון?אני די חדש בjs אבל נראה לי כמו בvb שבעצם הdate הוא ערך מספרי -עשרוני מ ה01/01/1900 כל יום הוא יחידה ושעה זה יחידה לחלק ל24 ודקות וכו',(בJS החלוקה שונה - אבל ברור שמשתנה תאריך כשלעצמו, הוא ערך מספרי).
והרעיון במשתנה מיוחד של date או dateTime (כמובן לגבי הערך חוץ מהפונקציות שבו), הוא התצוגה שהוא מראה את זה כתאריך ושעה.
לכן לכאו' מיון פשוט הוא יבין כבר מה אתה רוצה.
מקווה שלא טעיתי אשמח שיתקנו אותי, א"כ.@חוקר אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
ובעיה נוספת, היות שבממשק אני אמור להציג את השעה בעמודה ללא התאריך (זה מאוד יסרבל), מה עדיף? להוסיף עמודה נוספת המכילה את השעה בלבד? או בעת הרנדור של הHTML לחתוך את התאריך או מה?
כנ"ל אני חדש בJS אבל יש פונקציות כגון myDate.getHours() + ':' + myDate.getMinutes()
משהו הרבה יותר נורמלי, (בזה יש בעיה, שבשעה 00 הוא מראה רק 0 אחד והוא לא נכנס לתוךinput type="time"
רק אם מוסיפים 0) -
@חוקר אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
@אהרן אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
@חוקר אמר בכשהיום מתארך ל25 ו26 שעות או יותר..:
JS יודע להמיר אותו לערך מספרי ולמיין אותו
לדעתי שמור אותו מלכתחילה כערך מספרי
זו סתם שאלה עקרונית בלי קשר, האם לשמור נתונים כתאריך ושעה או כתחימת זמן יוניקס.
במקרה כאם אני חושב שאכן מספיק זמן יוניקס, רק שאצטרך תזכורת בעד 18 שנה יחד עם כל שאר המתכנתים שמשתמשים בשיטה זו, לראות איך מתמודדים את התאריך לאחר 2038-01-09 03:14:07אם יהיה בעיות זה יצוץ לך מכל מקום
במסדי נתונים זה דווקא יהיה המקום היחסית קל
סך הכל לשנות את הסוג של העמודה.
ולהמשיך הלאה (לכאורה, לא מכיר את באג 2038 לעומק)