Skip to content

Instantly share code, notes, and snippets.

@RMuskovets
Created December 13, 2018 16:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RMuskovets/1a0f08dc66c208e3ec037a89f19e9704 to your computer and use it in GitHub Desktop.
Save RMuskovets/1a0f08dc66c208e3ec037a89f19e9704 to your computer and use it in GitHub Desktop.
Скажи мені час по-українськи
Ukrainian_Time = {
'minute': 'хвилина',
'hour': 'година',
'second': 'секунда',
'minutes': 'хвилин',
'hours': 'годин',
'seconds': 'секунд',
}
Ukrainian_Time_Numbers = [
'нуль',
'одна',
'дві',
'три',
'чотири',
'п\'ять',
'шість',
'сім',
'вісім',
'дев\'ять',
'десять',
'двадцять',
'тридцять',
'сорок',
'п\'ятдесят',
'шістдесят',
'сімдесят',
'вісімдесят',
'дев\'яносто',
]
Ukrainian_Time_Numbers_Dcyat = [
'',
'оди',
'два',
'три',
'чотир',
'п\'ят',
'шіст',
'сім',
'вісім',
'дев\'ят'
]
Ukrainian_Start_TY = 9
Ukrainian_Dcyat = 'надцять'
def eone(s):
return s.endswith('1')
def is_dcyat(s):
if not s.isdigit():
return True
return 10 < int(s) < 20
def dcyat_act(string, kind):
if is_dcyat(string):
string = Ukrainian_Time_Numbers_Dcyat[int(string) % 10]
return string + Ukrainian_Dcyat + ' ' + Ukrainian_Time[kind]
return string
def other_act(string, kind):
if not is_dcyat(string):
part_a = (Ukrainian_Time_Numbers[int(string) // 10 + Ukrainian_Start_TY] + ' ' if int(string) >= 10 else '')
part_b = (Ukrainian_Time_Numbers[int(string) % 10] + ' ' if (int(string) != 0) ^ (part_a == '') else '')
if int(string) % 10 == 0:
part_b = ' ' if ((int(string) % 10) != 0) or (part_a == '') else ''
part_c = ('и' if (Ukrainian_Time_Numbers[int(string) % 10].endswith('и') or Ukrainian_Time_Numbers[int(string) % 10].endswith('і')) else '')
return part_a + part_b + Ukrainian_Time[kind] + part_c
return string
def ukrainian_time(h, m, s):
h_string = str(0 if h < 0 or h >= 24 else h)
m_string = str(0 if m < 0 or m >= 60 else m)
s_string = str(0 if s < 0 or s >= 60 else s)
h_string_ukr = ''
m_string_ukr = ''
s_string_ukr = ''
h_string_ukr = dcyat_act(h_string, 'hours')
m_string_ukr = dcyat_act(m_string, 'minutes')
s_string_ukr = dcyat_act(s_string, 'seconds')
h_string_ukr = other_act(h_string_ukr, 'hour' if eone(h_string_ukr) else 'hours')
m_string_ukr = other_act(m_string_ukr, 'minute' if eone(m_string_ukr) else 'minutes')
s_string_ukr = other_act(s_string_ukr, 'second' if eone(s_string_ukr) else 'seconds')
return h_string_ukr + ', ' + m_string_ukr + ', ' + s_string_ukr
if __name__ == '__main__':
import datetime
dt = datetime.datetime.now()
print(ukrainian_time(dt.hour, dt.minute, dt.second))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment