New release.
[memo.git] / pretty_time.py
bloba83f2680d750f79a853652cfc22488592a9fa51b
1 import time
3 day_name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',
4 'Saturday', 'Sunday']
6 month_name = ['January', 'February', 'March', 'April',
7 'May', 'June', 'July', 'August',
8 'September', 'October', 'November', 'December']
10 about_message = ['nearly', 'nearly', 'about', 'just gone', 'just gone']
12 section_name = ['', 'five past ', 'ten past ', 'a quarter past ',
13 'twenty past ', 'twenty-five past ', 'half past ',
14 'twenty-five to ', 'twenty to ', 'a quarter to ',
15 'ten to ', 'five to ']
17 number = [None, 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
18 'nine', 'ten', 'eleven']
20 def hour_name(hour):
21 assert hour >= 0 and hour < 24
23 if hour == 0:
24 return "midnight"
25 elif hour == 12:
26 return "noon"
27 return number[hour % 12]
29 def th(n):
30 "Cardinal integer to ordinal string."
31 if n > 3 and n < 20:
32 return "%dth" % n
34 d = n % 10
35 if d == 1:
36 return "%dst" % n
37 elif d == 2:
38 return "%dnd" % n
39 elif d == 3:
40 return "%drd" % n
41 else:
42 return "%dth" % n
44 def rough_time(time_in_seconds):
45 "Convert a time (as returned by time()) to a string."
46 t = time.localtime(time_in_seconds + 150)
47 year, month, day, hour, minute, second, weekday, julian, dst = t
49 off = about_message[minute % 5]
51 if minute / 5 > 6:
52 hour = (hour + 1) % 24
54 if minute / 5 == 0 and hour != 0 and hour != 12:
55 o_clock = " o'clock"
56 else:
57 o_clock = ""
59 return "It's %s %s%s%s" % (about_message[minute % 5],
60 section_name[minute / 5],
61 hour_name(hour), o_clock)
63 def str_time(hour, min):
64 h = hour % 12
65 if h == 0:
66 h = 12
67 if hour < 12:
68 am = 'am'
69 else:
70 am = 'pm'
71 return '%s:%02d %s' % (h, min, am)