예제 #1
0
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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
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
예제 #5
0
    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)
예제 #6
0
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
예제 #7
0
def test_gregorian_valid_range(test_input):
    year, month, day = test_input
    try:
        convert.Gregorian(year, month, day)._check_range()
    except OverflowError:
        pytest.fail()
예제 #8
0
def gregorian():
    return convert.Gregorian(1990, 3, 10)
예제 #9
0
#!/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[ ]:
예제 #10
0
    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
예제 #11
0
def gregorian_obj(request):
    request.cls.gregorian_obj = convert.Gregorian(1990, 3, 10)
예제 #12
0
              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()