|
1 | | -# randomtimestamp |
2 | | -Random timestamp generator |
| 1 | +      |
3 | 2 |
|
| 3 | +# randomtimestamp <sup> (v2.0.0)</sup> |
| 4 | +Random timestamp generator |
| 5 | +## Installation |
| 6 | +You know it: |
| 7 | +``` |
| 8 | +pip install randomtimestamp |
| 9 | +``` |
4 | 10 | ## Usage |
5 | | -randomtimestamp can be used from the command line or imported as a python package. |
| 11 | +randomtimestamp can be used from the command line or imported as a python module. |
6 | 12 |
|
7 | | -### Command line usage |
| 13 | +#### Command line usage |
8 | 14 | To use the script from command line |
9 | 15 | ``` |
10 | 16 | $randomtimestamp |
11 | 17 | 30-08-1995 17:58:14 |
12 | 18 | ``` |
13 | 19 |
|
14 | | -### Python Package Usage |
| 20 | +#### Python Module Usage |
15 | 21 |
|
16 | | -The function **randomtimestamp** takes two optional arguments: |
| 22 | +In v2.0.0, the function **randomtimestamp** takes six optional arguments: |
17 | 23 | ``` |
18 | | -randomtimestamp(start_year=1950,text=True) |
| 24 | +randomtimestamp( |
| 25 | + start_year: int = 1950, |
| 26 | + text: bool = True, |
| 27 | + end_year: int = None, |
| 28 | + start: datetime.datetime = None, |
| 29 | + end: datetime.datetime = None, |
| 30 | + pattern: str = "%d-%m-%Y %H:%M:%S" |
| 31 | + ) |
19 | 32 | ``` |
| 33 | +Order of **start_year** & **text** hasn't been changed in v2.0.0 for backward compatibility. Future versions may not support the same order of arguments. |
| 34 | + |
| 35 | +*Order of resolution:* |
| 36 | +1. start/end |
| 37 | +2. start_year/end_year |
| 38 | + |
| 39 | +This means providing *start_year/end_year* to function call has no effect if *start/end* are also provided. |
| 40 | + |
20 | 41 | The default values of **start_year** and **text** are *1950* and *True* respectively. |
21 | | -The timestamp is generated between *1950* and current year (*datetime.now().year*). Although a year before 1950 could have been used, but it didn't seem to be necessary. |
| 42 | +The timestamp is generated between *January 1st, 1950, 00:00:00* and *datetime.now()*. |
| 43 | + |
| 44 | + |
| 45 | +## Features: |
| 46 | +1. Call without arguments returns a random timestamp as string (**DD-MM-YYYY HH:MM:SS**), where **HH** follows 24-hour format. Setting **text=False** returns a *datetime* object. |
| 47 | +2. Lower limit of **start_year = 1950** has been removed. Now 1 <= start_year <= 9999 is allowed. **end_year** has been added to provide upper limit of timestamp beyond current year (within 1-9999). If **end_year** is not given, current year is used as **end_year**. |
| 48 | + |
| 49 | + **NOTE**: Both are integers and *start_year <= end_year* is required. If *end_year* is provided, *start_year* is required too. |
| 50 | + |
| 51 | +3. **start** and **end** arguments are datetime objects and can be used for more precise control over timestamp range. **start_year** & **end_year** have no effect if **start** and **end** are given. If **end** is not given, **datetime.now()** is used as **end**. |
| 52 | + |
| 53 | + **NOTE**: Both are datetime objects and *start < end* is required. If *end* is provided, *start* is required too. |
| 54 | + |
| 55 | +4. **pattern** can be used to generate timestamps in desired format, using valid formats described in [datetime documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes). The default pattern is **"%d-%m-%Y %H:%M:%S"**. |
| 56 | + |
| 57 | + **NOTE**: *pattern* has no effect if **text=False**. |
22 | 58 |
|
23 | | -By default, the function returns the output as string in format (**DD-MM-YYYY HH:MM:SS**), where **HH** is in 24-hour format. Setting **text=False** returns a *datetime* object. |
24 | 59 |
|
25 | | -Here are examples of all the possible syntaxes: |
| 60 | + |
| 61 | +## Examples: |
| 62 | +Here are some examples of the possible syntaxes: |
26 | 63 | ``` |
27 | | - >>>from randomtimestamp import randomtimestamp |
28 | | - |
29 | | - >>>randomtimestamp() |
| 64 | + >>> from randomtimestamp import randomtimestamp |
| 65 | +
|
| 66 | + >>> randomtimestamp() |
30 | 67 | '02-06-1970 23:34:10' |
| 68 | +
|
| 69 | + >>> randomtimestamp(start_year=2020, end_year=2021) |
| 70 | + '05-09-2021 17:24:28' |
| 71 | +
|
| 72 | + >>> randomtimestamp(start_year=2020, end_year=2021, text=False) |
| 73 | + datetime.datetime(2021, 1, 10, 5, 6, 19) |
| 74 | +
|
| 75 | + >>> from datetime import datetime |
| 76 | + >>> start = datetime(2020, 5, 10, 0, 0, 0) |
| 77 | + >>> end = datetime(2020, 10, 10, 0, 0, 0) |
| 78 | + >>> randomtimestamp(start=start, end=end) |
| 79 | + '27-09-2020 20:42:55' |
31 | 80 | |
32 | | - >>>randomtimestamp(2010) |
33 | | - '02-06-2013 23:34:10' |
34 | | - |
35 | | - >>>randomtimestamp(start_year=2005) |
36 | | - '10-04-2015 10:55:02' |
37 | | - |
38 | | - >>>randomtimestamp(2010,False) |
39 | | - datetime.datetime(2010, 5, 16, 3, 32, 18) |
40 | | - |
41 | | - >>>randomtimestamp(text=False) |
42 | | - datetime.datetime(1951, 2, 13, 18, 19, 1) |
| 81 | + >>> randomtimestamp(start=start, end=end, pattern='%d-%h-%Y %I:%M:%S %p') |
| 82 | + '03-Aug-2020 08:06:27 PM' |
43 | 83 | ``` |
| 84 | +In any case, if you ever feel stuck, use **help(randomtimestamp)** inside Python's REPL. |
| 85 | + |
| 86 | +--- |
| 87 | + |
| 88 | +#### Footnote: |
| 89 | +Type validation has been done, but it won't be required for most developers. If you're someone who likes to break the code with deliberately crafted inputs, you'd most likely receive a **TypeError** or a **ValueError**. |
| 90 | + |
| 91 | +However, if you do find a bug, please report to make the experience better for other developers. |
| 92 | + |
44 | 93 |
|
45 | 94 | ## License |
46 | 95 | This project is released under [GNU GENERAL PUBLIC LICENSE V3](https://www.gnu.org/licenses/gpl-3.0.en.html). |
0 commit comments