חידה: פירסור תאריך מסויים שנכשל
-
אני מנסה להשתמש בתוכנה מסויימת ונתקל בבאג, בנסיון לבודד את הבאג הגעתי לקוד כזה:
שפה: Swift
import Foundation let df = DateFormatter() df.dateFormat = "MM/dd/yy HH:mm" print(df.date(from: "03/23/12 02:18"))
בנסיונות שונים כל תאריך אחר בשנה תקין, רק 23 לחודש מרץ נכשל, מה הפשט
?
גם שעות אחרות ביום הזה מצליחים -
מצאתי את הפתרון המתבקש... לגלות או להשאיר את זה לניחושים שלכם?
-
@yossiz אני מנחש שיש משהו שהפך את האותיות, ויום בחודש 32 לא אפשרי אבל 22 כן.
אבל עדיין לא מובן שאר האותיות למה לא נהפכו -
@Y-Excel-Access ערכתי את הפוסט המקורי לחדד יותר:
בנסיונות שונים כל תאריך אחר בשנה תקין, רק 23 לחודש מרץ נכשל, מה הפשט
?
גם שעות אחרות ביום הזה מצליחיםהפתרון ממש מתבקש
-
@yossiz המרה ל INT או משהו?
-
@WWW "או משהו"... אתה לא מתקרב לתשובה כלל
נו, מה יכול להיות כל כך מיוחד בתאריך ושעה מסויימת?
גם מי שלא יודע כלום על תכנות יכול לנחש
-
@yossiz אם אני מבין נכון, הבעיה היא איפשהוא במעבר משעון חורף, לשעון קיץ (DST).
בישראל ב2012, השעון חורף נכנס ב30 במרץ, והשעון קיץ נכנס ב23 בספטמבר. לפי ההבנה שלי, איכשהוא בספרייה Foundation יש באג, שהפך את החודשים בין השעון קיץ לחורף, ולפי כך, בתאריך 23 במרץ, מבחינתו, איך שעה כזאת ביקום.
זה רק השערה, קשה לוודא אם היא נכונה או לא. אפשר לשנות את אזור הזמן במחשב, או להגדיר לDateFormatter להשתמש בLenient, ע״מ לקבל את השעה הראשונה שקיימת באותו יום. משהו כזה:
dFmt.isLenient = true if let date = dFmt.date(from: "2012-03-23") { dFmt.dateFormat = "yyyy-MM-dd HH:mm:ss" print(dFmt.string(from: date)) }
-
@Elhanan ייתכן ששני נביאים מתנבאים בסגנון אחד?
https://github.com/RobotsAndPencils/XcodesApp/issues/329#issuecomment-1326290283 -
@yossiz קיבלתי את הרעיון מהרמז (הכיוון חשיבה) שנתת כאן, אבל שוב, זה רק השערה..
גם שעות אחרות ביום הזה מצליחים