Add The Hebrew Date To Your Web Pages

Copy and paste this code into your web page

<SCRIPT LANGUAGE="JavaScript1.2">

<!-- Begin

  var dToday=new Date();
  dToday.setHours(0)
  dToday.setMinutes(0)
  dToday.setSeconds(0)
  dToday.setMilliseconds(0)
  document.write(FormatDateH(GregToHeb(dToday)))

  function MonSinceFirstMolad(nYearH) {
    var nMonSinceFirstMolad
    nYearH --

    nMonSinceFirstMolad = Math.floor(nYearH / 19) * 235
    nYearH = nYearH % 19
    nMonSinceFirstMolad += 12 * nYearH
    if (nYearH >= 17) {
      nMonSinceFirstMolad += 6
    } else if  (nYearH >= 14) {
      nMonSinceFirstMolad += 5
    } else if  (nYearH >= 11) {
      nMonSinceFirstMolad += 4
    } else if  (nYearH >= 8) {
      nMonSinceFirstMolad += 3
    } else if  (nYearH >= 6) {
      nMonSinceFirstMolad += 2
    } else if  (nYearH >= 3) {
      nMonSinceFirstMolad += 1
    }
    return nMonSinceFirstMolad
  }

  function IsLeapYear(nYearH) {
     var nYearInCycle

    nYearInCycle = nYearH % 19
    return ( nYearInCycle ==  3 ||
             nYearInCycle ==  6 ||
             nYearInCycle ==  8 ||
             nYearInCycle == 11 ||
             nYearInCycle == 14 ||
             nYearInCycle == 17 ||
             nYearInCycle == 0)
  }

  function Tishrei1(nYearH) {
    var nMonthsSinceFirstMolad
    var nChalakim
    var nHours
    var nDays
    var nDayOfWeek
    var dTishrei1

    nMonthsSinceFirstMolad = MonSinceFirstMolad(nYearH)
    nChalakim = 793 * nMonthsSinceFirstMolad
    nChalakim += 204
    nHours = Math.floor(nChalakim / 1080)
    nChalakim = nChalakim % 1080

    nHours += nMonthsSinceFirstMolad * 12
    nHours += 5

    nDays = Math.floor(nHours / 24)
    nHours = nHours % 24

    nDays += 29 * nMonthsSinceFirstMolad
    nDays += 2

    nDayOfWeek = nDays % 7

    if (!IsLeapYear(nYearH) &&
        nDayOfWeek == 3 &&
        (nHours * 1080) + nChalakim >= (9 * 1080) + 204) {
      nDayOfWeek = 5
      nDays += 2
    }
    else if ( IsLeapYear(nYearH - 1) &&
              nDayOfWeek == 2 &&
              (nHours * 1080) + nChalakim >= (15 * 1080) + 589 ) {
      nDayOfWeek = 3
      nDays += 1
    }
    else {
      if (nHours >= 18) {
        nDayOfWeek += 1
        nDayOfWeek = nDayOfWeek % 7
        nDays += 1
      }
      if (nDayOfWeek == 1 ||
          nDayOfWeek == 4 ||
          nDayOfWeek == 6) {
        nDayOfWeek += 1
        nDayOfWeek = nDayOfWeek % 7
        nDays += 1
      }
    }

    nDays -= 2067025
    dTishrei1 = new Date(1900, 0, 1)
    dTishrei1.setDate(dTishrei1.getDate() + nDays)

    return dTishrei1
  }

  function LengthOfYear(nYearH) {
    var dThisTishrei1
    var dNextTishrei1
    var diff

    dThisTishrei1 = Tishrei1(nYearH)
    dNextTishrei1 = Tishrei1(nYearH + 1)
    diff = (dNextTishrei1 - dThisTishrei1) / ( 1000 * 60 * 60 * 24)
    return Math.round(diff)
  }

  function GregToHeb(dGreg) {
    var nYearH
    var nMonthH
    var nDateH
    var nOneMolad
    var nAvrgYear
    var nDays
    var dTishrei1
    var nLengthOfYear
    var bLeap
    var bHaser
    var bShalem
    var nMonthLen
    var bWhile
    var d1900 = new Date(1900, 0, 1)

    nOneMolad = 29 + (12 / 24) + (793 / (1080 * 24))
    nAvrgYear = nOneMolad * (235 / 19)
    nDays = Math.round((dGreg - d1900) / (24 * 60 * 60 * 1000))
    nDays += 2067025
    nYearH = Math.floor(nDays / nAvrgYear) + 1
    dTishrei1 = Tishrei1(nYearH)

    if (SameDate(dTishrei1, dGreg)) {
      nMonthH = 1
      nDateH = 1
    }
    else  {
      if (dTishrei1 < dGreg) {
        while (Tishrei1(nYearH + 1) <= dGreg) {
          nYearH += 1
        }
      }
      else {
        nYearH -= 1
        while (Tishrei1(nYearH) > dGreg) {
          nYearH -= 1
        }
      }

      nDays = (dGreg - Tishrei1(nYearH)) / (24 * 60 * 60 * 1000)
      nDays = Math.round(nDays)
      nLengthOfYear = LengthOfYear(nYearH)
      bHaser = nLengthOfYear == 353 || nLengthOfYear == 383
      bShalem = nLengthOfYear == 355 || nLengthOfYear == 385
      bLeap = IsLeapYear(nYearH)

      nMonthH = 1
      do {

        switch (nMonthH) {
          case 1:
          case 5:
          case 6:
          case 8:
          case 10:
          case 12:
            nMonthLen = 30
            break
          case 4:
          case 7:
          case 9:
          case 11:
          case 13:
            nMonthLen = 29
            break
          case 6:
            nMonthLen = 30
            break
          case 2:
            nMonthLen = (bShalem ? 30 : 29)
            break
          case 3:
            nMonthLen = (bHaser ? 29: 30)
            break
        }

        if (nDays >= nMonthLen) {
          bWhile = true
          if (bLeap || nMonthH != 5) {
            nMonthH ++
          }
          else {
            nMonthH += 2
          }
          nDays -= nMonthLen
        }
        else {
          bWhile = false
        }
      } while (bWhile)
      nDateH = nDays + 1
    }
    return nMonthH + "/" + nDateH + "/" + nYearH
  }

  function SameDate(d1, d2) {
    return (d1.getFullYear() == d2.getFullYear() && 
            d1.getMonth() == d2.getMonth() && 
            d1.getDate() == d2.getDate())
             
  } 

  function FormatDateH(cDate) {
    var aDate = new Array()
    var cFormatDate

    aDate = cDate.split("/")
    switch (Number(aDate[0])) {
      case 1:
        cFormatDate = "Tishrei"
        break
      case 2:
        cFormatDate = "Cheshvan"
        break
      case 3:
        cFormatDate = "Kislev"
        break
      case 4:
        cFormatDate = "Teves"
        break
      case 5:
        cFormatDate = "Shevat"
        break
      case 6:
        cFormatDate = "Adar A"
        break
      case 7:
        cFormatDate = (IsLeapYear(Number(aDate[2])) ? "Adar B" : "Adar")
        break
      case 8:
        cFormatDate = "Nisan"
        break
      case 9:
        cFormatDate = "Iyar"
        break
      case 10:
        cFormatDate = "Sivan"
        break
      case 11:
        cFormatDate = "Tamuz"
        break
      case 12:
        cFormatDate = "Av"
        break
      case 13:
        cFormatDate = "Elul"
        break
    }
    cFormatDate += " " + aDate[1] + ", " + aDate[2]
    return cFormatDate
  }

// End -->
</SCRIPT>

Sample HTML/Java Script Code With Comments

VB.Net Code

Return to Daf-A-Week