code: def _get_gz_ymd(self):
          
          solar_date = MIN_SOLAR_DATE + datetime.timedelta(days=self._offset)
          sy, sm, sd = solar_date.year, solar_date.month, solar_date.day
          s_offset = (datetime.date(sy, sm, sd) - MIN_SOLAR_DATE).days
          gz_year = TextUtils.STEMS[(self.year - 4) % 10] + TextUtils.BRANCHES[(self.year - 4) % 12]
          gz_day = TextUtils.get_gz_cn((s_offset + 40) % 60)
          term_name, next_gz_month = TermUtils.get_term_info(sy, sm, sd)
          if next_gz_month:
              gz_month = TextUtils.get_gz_cn((sy - 1900) * 12 + sm + 12)
          else:
              gz_month = TextUtils.get_gz_cn((sy - 1900) * 12 + sm + 11)
          return gz_year, gz_month, gz_day, term_name
docs: (sy, sm, sd) -> term / gz_year / gz_month / gz_day