Home > Learning, Lesson, Problem, Projects/Experiments, Python > Python: My Fake Data Generator P-4

## Python: My Fake Data Generator P-4

Learning : Python: Functions, Procedures and documentation
Subject: About fake data P-4: (Fake Dates)

The fourth function of our Fake Data Generator will be the date function, from it’s name this one will generate a FAKE Date in yyyy/mm/dd format. The function will have one argument (go_back) for range, the max-limit is current date (today) and mini-limit will be (1/1/1900), if the user did’t pass any thing for (go_back) then the range is (from current to 1/1/1900) and if the user pass (X) then the range will be ((current date) to current – X_YEARS). Also in dates we need to take care of Leap Years, In leap year, the month of February has 29 days instead of 28. To solve this in our function we can use two ways, first one (the easy way) we know that we are generating a random numbers for months and days; so we can say if the month is February, then days can’t be more than 28. But if we want this thing to be more realistic we need to add more conditions such as :
1. The year can be evenly divided by 4.
2. If the year can be evenly divided by 100, it is NOT a leap year, unless the year is also evenly divisible by 400. Then it is a leap year (February has 29 days).

'''
10/12/2019
To get Fake Date.

'''

import random, datetime

def fdate(go_back = 0):
"""
###   Fake Date Generator V.01  ###

This function will generate and return a fake date in string format.
The function accept one int argument go_pback.
If go_past = X, and current year - X is less than 1900 then
the range of FAKE time will be (current year to current year - X).

If NO argument passed to the function, then default limit set to 1900.

Default limits:  Date are from current (today) and back to 1900.

Import: random, datetime

Argument: int : go_back to set the upper limit of the date

Return: str: dd/mm/yyyy

"""

# Get current year.
c_year = datetime.datetime.today().year

# set the maximum year limit.
if go_back > 0 :
max_y_limit = c_year - go_back
else :
max_y_limit = 1900

if max_y_limit < 1900 :
max_y_limit = 1900

yy = random.randint(max_y_limit, c_year)

mm = random.randint(1,12)

if mm in [1,3,5,7,8,10,12] :
dd = random.randint(1,31)
elif mm in [4,6,9,11]:
dd = random.randint(4,30)

else :
# IF the month is February (2)
if (yy % 4 == 0 ) or ((yy % 100 == 0)and (yy % 400 == 0)):
# It is a leap year February has 29 days.
dd = random.randint(1,29)

else : # it is NOT a leap year February has 28 days.
dd = random.randint(1,28)

d = (str(dd) +'/'+ str(mm)+'/' + str(yy))

return (str(dd) +'/'+ str(mm)+'/' + str(yy))

# To check the output.
for x in range (30):
print(fdate())

<
Here is a screenshot of the code, also available on the Download Page . . .

:: Fake Function List ::

 Function Name Description Color To return a random color code in RGB or Hex. Date To return a random date. Mobile To return a mobile number. Country To return a random country name. City To return a random City name. ID To return X random dig as ID. Time To return random time. Car’s Brand file_name

 Done