Source code for fundamentals.times
#!/usr/local/bin/python
# encoding: utf-8
"""
*Some time functions to be used with logging etc*
Author
: David Young
"""
from builtins import str
import sys
import os
os.environ["TERM"] = "vt100"
[docs]
def get_now_sql_datetime():
"""
*A datetime stamp in MySQL format: 'YYYY-MM-DDTHH:MM:SS'*
**Return**
- ``now`` -- current time and date in MySQL format
**Usage**
```python
from fundamentals import times
now = times.get_now_sql_datetime()
print now
# OUT: 2016-03-18T11:08:23
```
"""
from datetime import datetime, date, time
now = datetime.now()
now = now.strftime("%Y-%m-%dT%H:%M:%S")
return now
[docs]
def datetime_relative_to_now(date):
"""
*convert date to a relative datetime (e.g. +15m, +2hr, +1w)*
**Key Arguments**
- ``date`` -- absolute date
**Return**
- a relative date
**Usage**
```python
from fundamentals import times
relTime = times.datetime_relative_to_now(date)
```
"""
from datetime import datetime
diff = datetime.now() - date
s = diff.seconds
if diff.days == 1:
return " + 1d"
elif diff.days > 1:
return " +{0}d".format(diff.days)
elif s <= 1:
return " just now"
elif s < 60:
return " +{0}sec".format(s)
elif s < 120:
return " +1min"
elif s < 3600:
return " +{0}min".format(int(s / 3600))
elif s < 7200:
return " +1hr"
else:
return " +{0}hr".format(int(s / 3600))
[docs]
def calculate_time_difference(startDate, endDate):
"""
*Return the time difference between two dates as a string*
**Key Arguments**
- ``startDate`` -- the first date in YYYY-MM-DDTHH:MM:SS format
- ``endDate`` -- the final date YYYY-MM-DDTHH:MM:SS format
**Return**
- ``relTime`` -- the difference between the two dates in Y,M,D,h,m,s (string)
**Usage**
```python
from fundamentals import times
diff = times.calculate_time_difference(startDate="2015-10-13 10:02:12", endDate="2017-11-04 16:47:05")
print diff
# OUT: 2yrs 22dys 6h 44m 53s
```
"""
from datetime import datetime
from dateutil import relativedelta
################ > VARIABLE SETTINGS ######
################ >ACTION(S) ################
if "T" not in startDate:
startDate = startDate.strip().replace(" ", "T")
if "T" not in endDate:
endDate = endDate.strip().replace(" ", "T")
startDate = datetime.strptime(startDate, "%Y-%m-%dT%H:%M:%S")
endDate = datetime.strptime(endDate, "%Y-%m-%dT%H:%M:%S")
d = relativedelta.relativedelta(endDate, startDate)
relTime = ""
if d.years > 0:
relTime += str(d.years) + "yrs "
if d.months > 0:
relTime += str(d.months) + "mths "
if d.days > 0:
relTime += str(d.days) + "dys "
if d.hours > 0:
relTime += str(d.hours) + "h "
if d.minutes > 0:
relTime += str(d.minutes) + "m "
if d.seconds > 0:
relTime += str(d.seconds) + "s"
###############################
if relTime == "":
relTime = "0s"
return relTime