def convert_date(date: str, base: str, target: str) -> str: if base == target: return date if base == "shamsi": y, m, d = map(int, split_date(date)) greg = str(jdatetime.date(year=y, month=m, day=d).togregorian()) y, m, d = map(int, split_date(greg)) hijri = str(convert.Gregorian(y, m, d).to_hijri()) if target == "greg": return greg elif target == "hijri": return hijri elif base == "greg": y, m, d = map(int, split_date(date)) shamsi = str(jdatetime.date(year=y, month=m, day=d).fromgregorian()) hijri = str(convert.Gregorian(y, m, d).to_hijri()) if target == "shamsi": return shamsi elif target == "hijri": return hijri elif base == "hijri": y, m, d = map(int, split_date(date)) greg = str(convert.Hijri(y, m, d).to_gregorian()) y, m, d = map(int, split_date(greg)) shamsi = str(jdatetime.date(year=y, month=m, day=d).fromgregorian()) if target == "greg": return greg elif target == "shamsi": return shamsi
def get_gre_date(self, year, Hmonth, Hday): """ returns the gregian date of of a of the given gregorian calendar yyyy year with Hijari Month & Day """ try: from hijri_converter import convert except ImportError: import warnings def warning_on_one_line(message, category, filename, lineno, file=None, line=None): return filename + ': ' + str(message) + '\n' warnings.formatwarning = warning_on_one_line warnings.warn("Error estimating Islamic Holidays." + "To estimate, install hijri-converter library") warnings.warn("pip install -U hijri-converter") warnings.warn("(see https://hijri-converter.readthedocs.io/ )") return [] Hyear = convert.Gregorian(year, 1, 1).to_hijri().datetuple()[0] hrhs = [] hrhs.append(convert.Hijri(Hyear - 1, Hmonth, Hday).to_gregorian()) hrhs.append(convert.Hijri(Hyear, Hmonth, Hday).to_gregorian()) hrhs.append(convert.Hijri(Hyear + 1, Hmonth, Hday).to_gregorian()) hrh_dates = [] for hrh in hrhs: if hrh.year == year: hrh_dates.append(date(*hrh.datetuple())) return hrh_dates
def get_hrh_date(self, year): try: from hijri_converter import convert except ImportError: import warnings def warning_on_one_line(message, category, filename, lineno, file=None, line=None): return filename + ': ' + str(message) + '\n' warnings.formatwarning = warning_on_one_line warnings.warn("Hari Raja Haji is missing." + "To estimate, install hijri-converter library") warnings.warn("pip install -U hijri-converter") warnings.warn("(see https://hijri-converter.readthedocs.io/ )") return [] Hyear = convert.Gregorian(year, 1, 1).to_hijri().datetuple()[0] hrhs = [] hrhs.append(convert.Hijri(Hyear - 1, 12, 10).to_gregorian()) hrhs.append(convert.Hijri(Hyear, 12, 10).to_gregorian()) hrhs.append(convert.Hijri(Hyear + 1, 12, 10).to_gregorian()) hrh_dates = [] for hrh in hrhs: if hrh.year == year: hrh_dates.append(date(*hrh.datetuple())) return hrh_dates
def tr_hijri_date(date_): if isinstance(date_, datetime.datetime): date_ = date_.date() date_h = convert.Gregorian(date_.year, date_.month, date_.day).to_hijri() month = tr_hijri_month[date_h.month] translation = "{} {} سال {}".format(num2fa_gen[date_h.day], month, date_h.year) return translation
def switch_dates(self, year, month, day): iso = datetime(int(year), int(month), int(day)) key = getstrftime('%A, %B {S}, %Y', iso) islamic_date = getDict()[key].split(',')[1].strip() self.label.text = islamic_date thread = threading.Thread(target=self.setNamaz, args=(iso, )) thread.start() hijri = convert.Gregorian(year, month, day).to_hijri().datetuple() hijri_iso = f"{hijri[2]}-{hijri[1]}" islamic = [] personal_events = getPersonal(str(iso).split()[0]) with open('./lib/data/islamic.json', 'r', encoding="utf-8") as file: data = json.loads(str(file.read())) for key in data.keys(): if key == hijri_iso: islamic.append(data[key]["event"]) self.wrv.clear_widgets() self.prv.clear_widgets() holidays = (Holidays().getHoliday(day, month, year, self.holidays)) self.wrv.add_widget(OneLineListItem(text="No Events")) self.prv.add_widget(OneLineListItem(text="No Events")) if holidays or islamic: self.wrv.clear_widgets() for i in holidays + islamic: text = str(i) description = None if type(i) == dict: text = str(i['name']) description = str(i['description']) item = EventItem(text=str(text), description=str(description)) self.wrv.add_widget(item) if personal_events: self.prv.clear_widgets() for x in personal_events: item = OneLineListItem(text=str(x)) self.prv.add_widget(item)
def test_gregorian_invalid_range(test_input, expected): with pytest.raises(OverflowError) as e: convert.Gregorian(*test_input)._check_range() assert str(e.value) == expected
def test_gregorian_valid_range(test_input): year, month, day = test_input try: convert.Gregorian(year, month, day)._check_range() except OverflowError: pytest.fail()
def gregorian(): return convert.Gregorian(1990, 3, 10)
#!/usr/bin/env python # coding: utf-8 # In[1]: get_ipython().system('pip install -U hijri-converter') # In[10]: from hijri_converter import convert import datetime x = datetime.datetime.now() print(x) j = int(input("year")) m = int(input("month")) d = int(input("day")) h = convert.Gregorian(j, m, d).to_hijri() print(h) # In[ ]:
def create(self, year, month, day): self.build() country = driver().getCity()['countryCode'] iso = datetime(int(year), int(month), int(day)) key = getstrftime('%A, %B {S}, %Y', iso) islamic_date = getDict()[key].split(',')[1].strip() hijri = convert.Gregorian(year, month, day).to_hijri().datetuple() hijri_iso = f"{hijri[2]}-{hijri[1]}" islamic = [] self.label = MDLabel() self.label.size_hint_y = .05 self.label.font_size = "35px" self.label.halign = "center" self.label.text = islamic_date tabs = Tabs() tabs.on_tab_switch = self.on_tab_switch events = Screen(name='events') namaz = Screen(name='namaz') personal_events = getPersonal(str(iso).split()[0]) layout = MDBoxLayout(orientation='vertical') eventslayout = MDBoxLayout(orientation='vertical') self.sm = ScreenManager() events.add_widget(eventslayout) self.sm.add_widget(events) self.sm.add_widget(namaz) tabs.add_widget(Tab(text="Events")) tabs.add_widget(Tab(text="Namaz Times")) personalscreen = PersonalEvents() world = WorldEvents() scroll = ScrollView() self.nrv = MDList() self.wrv = world.ids.wrv self.prv = personalscreen.ids.prv self.holidays = json.loads( requests.get( f'https://calendarific.com/api/v2/holidays?&api_key={APIKEY}&country={country}&year={year}' ).text) self.holidays['year'] = year with open('./lib/data/islamic.json', 'r', encoding="utf-8") as file: data = json.loads(str(file.read())) for key in data.keys(): if key == hijri_iso: islamic.append(data[key]["event"]) holidays = (Holidays().getHoliday(day, month, year, self.holidays)) self.wrv.add_widget(OneLineListItem(text="No Events")) self.prv.add_widget(OneLineListItem(text="No Events")) if holidays or islamic: self.wrv.clear_widgets() for i in holidays + islamic: text = str(i) description = None if type(i) == dict: text = str(i['name']) description = str(i['description']) item = EventItem(text=str(text), description=str(description)) self.wrv.add_widget(item) if personal_events: self.prv.clear_widgets() for x in personal_events: item = OneLineListItem(text=str(x)) self.prv.add_widget(item) self.namaz_times = driver().getSalaatTimesForDate(iso) for item in self.namaz_times.keys(): self.nrv.add_widget( TwoLineListItem(text=str(item), secondary_text=str(self.namaz_times[item]), height=dp(50))) scroll.add_widget(self.nrv) layout.add_widget(self.label) layout.add_widget(tabs) layout.add_widget(self.sm) eventslayout.add_widget(world) eventslayout.add_widget(personalscreen) namaz.add_widget(scroll) self.sm.current = "events" self.add_widget(layout) return self
def gregorian_obj(request): request.cls.gregorian_obj = convert.Gregorian(1990, 3, 10)
sg.Button('Georg to Arabic'), sg.Button('Cancel') ]] # Window window = sg.Window('Date Converter', layout) # Event Loop to process the inputs while True: event, values = window.read() if event in (None, 'Cancel'): break if event == 'Arabic to Georg': arabicDay = int(values['arabic']) arabicMonth = int(values['arabic2']) arabicYear = int(values['arabic3']) g = convert.Hijri(arabicYear, arabicMonth, arabicDay).to_gregorian() n = g.day_name() print('The result in Georg. Calender: ', g) print('Day: ', n) if event == 'Georg to Arabic': georgDay = int(values['georg']) georgMonth = int(values['georg2']) georgYear = int(values['georg3']) h = convert.Gregorian(georgYear, georgMonth, georgDay).to_hijri() m = h.day_name() print('The result in Arabic Calender: ', h) print('Day: ', m) window.close()