Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1#!/usr/local/bin/python 

2# encoding: utf-8 

3""" 

4*Some time functions to be used with logging etc* 

5 

6:Author: 

7 David Young 

8""" 

9from builtins import str 

10import sys 

11import os 

12os.environ['TERM'] = 'vt100' 

13 

14 

15def get_now_sql_datetime(): 

16 """ 

17 *A datetime stamp in MySQL format: 'YYYY-MM-DDTHH:MM:SS'* 

18 

19 **Return** 

20 

21 - ``now`` -- current time and date in MySQL format 

22 

23 **Usage** 

24 

25 ```python 

26 from fundamentals import times 

27 now = times.get_now_sql_datetime() 

28 print now 

29 

30 # OUT: 2016-03-18T11:08:23  

31 ``` 

32 """ 

33 from datetime import datetime, date, time 

34 now = datetime.now() 

35 now = now.strftime("%Y-%m-%dT%H:%M:%S") 

36 

37 return now 

38 

39 

40def datetime_relative_to_now(date): 

41 """ 

42 *convert date to a relative datetime (e.g. +15m, +2hr, +1w)* 

43 

44 **Key Arguments** 

45 

46 - ``date`` -- absolute date 

47 

48 **Return** 

49 

50 - a relative date 

51 

52 **Usage** 

53 

54 ```python 

55 from fundamentals import times 

56 relTime = times.datetime_relative_to_now(date) 

57 ``` 

58 """ 

59 from datetime import datetime 

60 diff = datetime.now() - date 

61 s = diff.seconds 

62 if diff.days == 1: 

63 return ' + 1d' 

64 elif diff.days > 1: 

65 return ' +{0}d'.format(diff.days) 

66 elif s <= 1: 

67 return ' just now' 

68 elif s < 60: 

69 return ' +{0}sec'.format(s) 

70 elif s < 120: 

71 return ' +1min' 

72 elif s < 3600: 

73 return ' +{0}min'.format(int(s / 3600)) 

74 elif s < 7200: 

75 return ' +1hr' 

76 else: 

77 return ' +{0}hr'.format(int(s / 3600)) 

78 

79 

80def calculate_time_difference(startDate, endDate): 

81 """ 

82 *Return the time difference between two dates as a string* 

83 

84 **Key Arguments** 

85 

86 - ``startDate`` -- the first date in YYYY-MM-DDTHH:MM:SS format 

87 - ``endDate`` -- the final date YYYY-MM-DDTHH:MM:SS format 

88 

89 **Return** 

90 

91 - ``relTime`` -- the difference between the two dates in Y,M,D,h,m,s (string) 

92 

93 **Usage** 

94 

95 ```python 

96 from fundamentals import times 

97 diff = times.calculate_time_difference(startDate="2015-10-13 10:02:12", endDate="2017-11-04 16:47:05") 

98 print diff 

99 

100 # OUT: 2yrs 22dys 6h 44m 53s 

101 ``` 

102 """ 

103 from datetime import datetime 

104 from dateutil import relativedelta 

105 

106 ################ > VARIABLE SETTINGS ###### 

107 

108 ################ >ACTION(S) ################ 

109 if "T" not in startDate: 

110 startDate = startDate.strip().replace(" ", "T") 

111 if "T" not in endDate: 

112 endDate = endDate.strip().replace(" ", "T") 

113 startDate = datetime.strptime(startDate, '%Y-%m-%dT%H:%M:%S') 

114 endDate = datetime.strptime(endDate, '%Y-%m-%dT%H:%M:%S') 

115 d = relativedelta.relativedelta(endDate, startDate) 

116 

117 relTime = "" 

118 if d.years > 0: 

119 relTime += str(d.years) + "yrs " 

120 if d.months > 0: 

121 relTime += str(d.months) + "mths " 

122 if d.days > 0: 

123 relTime += str(d.days) + "dys " 

124 if d.hours > 0: 

125 relTime += str(d.hours) + "h " 

126 if d.minutes > 0: 

127 relTime += str(d.minutes) + "m " 

128 if d.seconds > 0: 

129 relTime += str(d.seconds) + "s" 

130 ############################### 

131 

132 if relTime == "": 

133 relTime = "0s" 

134 

135 return relTime