DCSIMG
חישוב שעון קיץ בדוט נט - מאחורי המסך

מאחורי המסך

משה למפרט, על תכנות מתקדם וביצועים ב-Web.

על הבלוג

עוד חדשות

אתרים שיש לי בהם יד ורגל

חישוב שעון קיץ בדוט נט

או: כך תחשבו את

שעון הקיץ

בישראל, תוך שימוש במחלקת התאריך העברי המובנית בדוט נט.

קצת אחרי ראש השנה תשס"ח העלנו בערוץ 7 יומן (כמו זה של גוגל והוטמייל). היומן, בניגוד ליומנים מתחרים - תומך בתאריך עברי מלא וכך גם חגים ומועדים (צומות וכו').
אחת היכולות שהוטמעה ביומן הזה הייתה זמנים הלכתיים, שהם למעשה אסטרונומיה, וכמובן, כפופים לשעון קיץ.

אז לטובת כל מי שיזדקק לזה בעתיד - פונקציה לחישוב שעון קיץ.

 Public Shared Function IsInSummerTime(ByVal dDate As DateTime) As Boolean 
      ' חישוב שעון קיץ בישראל
      ' משה למפרט, תשרי תשס"ח
      ' http://blogs.microsoft.co.il/blogs/moshel

      Dim oHD As New System.Globalization.HebrewCalendar
      Dim dStart As New Date(dDate.Year, 4, 2, 2, 0, 0)   ' 4.2 בשעה 2:00 בלילה
      dStart = dStart.AddDays(dStart.DayOfWeek * -1 - 3)  ' יום חמישי

      Dim dEnd As New DateTime(oHD.GetYear(dStart) + 1, 1, 9, oHD) ' ט' ניסן
      dEnd = dEnd.AddDays(dEnd.DayOfWeek * -1) ' יום ראשון
      If dDate > dStart And dDate < dEnd Then Return True
      Return False
  End Function

להפוך את זה ל-#C היה עניין של דקה בדיוק, אז הנה גם גירסא נוספת:

public static bool IsInSummerTime(DateTime dDate) 
{ 
/*
      ' חישוב שעון קיץ בישראל
      ' משה למפרט, תשרי תשס"ח
      ' http://blogs.microsoft.co.il/blogs/moshel
*/
    System.Globalization.HebrewCalendar oHD = new System.Globalization.HebrewCalendar(); 
    System.DateTime dStart = new System.DateTime(dDate.Year, 4, 2, 2, 0, 0); 
    // 4.2 בשעה 2:00 בלילה 
    dStart = dStart.AddDays(dStart.DayOfWeek * -1 - 3); 
    // יום חמישי 
    
    DateTime dEnd = new DateTime(oHD.GetYear(dStart) + 1, 1, 9, oHD); 
    // ט' ניסן 
    dEnd = dEnd.AddDays(dEnd.DayOfWeek * -1); 
    // יום ראשון 
    if (dDate > dStart & dDate < dEnd) 
        return true; 
    return false; 
}