code: def fromSolarDate(year, month, day):
          '''
          >>> LunarDate.fromSolarDate(1900, 1, 31)
          LunarDate(1900, 1, 1, 0)
          >>> LunarDate.fromSolarDate(2008, 10, 2)
          LunarDate(2008, 9, 4, 0)
          >>> LunarDate.fromSolarDate(1976, 10, 1)
          LunarDate(1976, 8, 8, 1)
          >>> LunarDate.fromSolarDate(2033, 10, 23)
          LunarDate(2033, 10, 1, 0)
          '''
          solarDate = datetime.date(year, month, day)
          offset = (solarDate - LunarDate._startDate).days
          return LunarDate._fromOffset(offsetf fromSolarDate(year, month, day):
          '''
          >>> LunarDate.fromSolarDate(1900, 1, 31)
          LunarDate(1900, 1, 1, 0)
          >>> LunarDate.fromSolarDate(2008, 10, 2)
          LunarDate(2008, 9, 4, 0)
          >>> LunarDate.fromSolarDate(1976, 10, 1)
          LunarDate(1976, 8, 8, 1)
          >>> LunarDate.fromSolarDate(2033, 10, 23)
          LunarDate(2033, 10, 1, 0)
          '''
          solarDate = datetime.date(year, month, day)
          offset = (solarDate - LunarDate._startDate).days
          return LunarDate._fromOffset(offset)
docs: >>> LunarDate.fromSolarDate(1900, 1, 31)
          LunarDate(1900, 1, 1, 0)
          >>> LunarDate.fromSolarDate(2008, 10, 2)
          LunarDate(2008, 9, 4, 0)
          >>> LunarDate.fromSolarDate(1976, 10, 1)
          LunarDate(1976, 8, 8, 1)
          >>> LunarDate.fromSolarDate(2033, 10, 23)
          LunarDate(2033, 10, 1, 0)