חידה: פירסור תאריך מסויים שנכשל
-
אני מנסה להשתמש בתוכנה מסויימת ונתקל בבאג, בנסיון לבודד את הבאג הגעתי לקוד כזה:
שפה: Swift
import Foundation let df = DateFormatter() df.dateFormat = "MM/dd/yy HH:mm" print(df.date(from: "03/23/12 02:18"))
בנסיונות שונים כל תאריך אחר בשנה תקין, רק 23 לחודש מרץ נכשל, מה הפשט ?
גם שעות אחרות ביום הזה מצליחים -
@Y-Excel-Access ערכתי את הפוסט המקורי לחדד יותר:
בנסיונות שונים כל תאריך אחר בשנה תקין, רק 23 לחודש מרץ נכשל, מה הפשט ?
גם שעות אחרות ביום הזה מצליחיםהפתרון ממש מתבקש
-
@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)) }