Coverage for fundamentals/times.py : 0%

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*
6:Author:
7 David Young
8"""
9from builtins import str
10import sys
11import os
12os.environ['TERM'] = 'vt100'
15def get_now_sql_datetime():
16 """
17 *A datetime stamp in MySQL format: 'YYYY-MM-DDTHH:MM:SS'*
19 **Return**
21 - ``now`` -- current time and date in MySQL format
23 **Usage**
25 ```python
26 from fundamentals import times
27 now = times.get_now_sql_datetime()
28 print now
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")
37 return now
40def datetime_relative_to_now(date):
41 """
42 *convert date to a relative datetime (e.g. +15m, +2hr, +1w)*
44 **Key Arguments**
46 - ``date`` -- absolute date
48 **Return**
50 - a relative date
52 **Usage**
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))
80def calculate_time_difference(startDate, endDate):
81 """
82 *Return the time difference between two dates as a string*
84 **Key Arguments**
86 - ``startDate`` -- the first date in YYYY-MM-DDTHH:MM:SS format
87 - ``endDate`` -- the final date YYYY-MM-DDTHH:MM:SS format
89 **Return**
91 - ``relTime`` -- the difference between the two dates in Y,M,D,h,m,s (string)
93 **Usage**
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
100 # OUT: 2yrs 22dys 6h 44m 53s
101 ```
102 """
103 from datetime import datetime
104 from dateutil import relativedelta
106 ################ > VARIABLE SETTINGS ######
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)
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 ###############################
132 if relTime == "":
133 relTime = "0s"
135 return relTime