File: README.md

package info (click to toggle)
pdd 1.7-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 228 kB
  • sloc: python: 548; sh: 30; makefile: 14
file content (249 lines) | stat: -rw-r--r-- 7,398 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<h1 align="center">pdd</h1>

<p align="center">
<a href="https://github.com/jarun/pdd/releases/latest"><img src="https://img.shields.io/github/release/jarun/pdd.svg?maxAge=600" alt="Latest release" /></a>
<a href="https://repology.org/project/pdd/versions"><img src="https://repology.org/badge/tiny-repos/pdd.svg" alt="Availability"></a>
<a href="https://pypi.org/project/pdd/"><img src="https://img.shields.io/pypi/v/pdd.svg?maxAge=600" alt="PyPI" /></a>
<a href="https://circleci.com/gh/jarun/workflows/pdd"><img src="https://img.shields.io/circleci/project/github/jarun/pdd.svg" alt="Build Status" /></a>
<a href="https://github.com/jarun/pdd/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-GPLv3-yellowgreen.svg?maxAge=2592000" alt="License" /></a>
</p>

<p align="center">
<a href="https://asciinema.org/a/189581"><img src="https://asciinema.org/a/189581.svg" alt="Asciicast" width="650"/></a>
</p>

`pdd` (Python3 Date Diff) is a tiny command line utility to calculate date and time difference. It can also be used as a timer. If no program arguments are specified it shows the current date, time and timezone.

`pdd` has been written with only one goal - simplicity. Users shouldn't have to memorize anything.

### Table of Contents

- [Features](#features)
- [Installation](#installation)
  - [Dependencies](#dependencies)
  - [From a package manager](#from-a-package-manager)
  - [Release packages](#release-packages)
  - [From source](#from-source)
  - [Running standalone](#running-standalone)
- [Usage](#usage)
  - [cmdline options](#cmdline-options)
  - [Operational notes](#operational-notes)
- [Examples](#examples)
- [Copyright](#copyright)

### Features

- easy to use, minimal dependencies
- calculate date and time difference
- calculate diff from *today* and *now*
- add, subtract duration (timeslice) to/from date (time)
- countdown timer with command piggybacking
- custom resolution stopwatch
- non-verbose mode for background timers
- show current date, time and timezone
- follows ISO 8601

### Installation

#### Dependencies

`pdd` requires Python 3.7 (or later) and the `dateutil` module.

To install `dateutil` on Ubuntu, run:

    $ sudo apt-get install python3-dateutil

or, using pip3:

    $ sudo pip3 install python-dateutil

#### From a package manager

Install `pdd` from your package manager. If the version available is dated try an alternative installation method.

<details><summary>Packaging status (expand)</summary>
<p>
<br>
<a href="https://repology.org/project/pdd/versions"><img src="https://repology.org/badge/vertical-allrepos/pdd.svg" alt="Packaging status"></a>
</p>
Unlisted packagers:
<p>
<br>
● <a href="https://pypi.org/project/pdd/">PyPI</a> (<code>pip3 install pdd</code>)<br>
● Termux (<code>pip3 install pdd</code>)<br>
</p>
</details>

#### Release packages

Packages for Arch Linux, CentOS, Debian, Fedora and Ubuntu are available with the [latest stable release](https://github.com/jarun/pdd/releases/latest).

#### From source

If you have git installed, clone this repository. Otherwise download the latest [latest stable release](https://github.com/jarun/pdd/releases/latest) or [development version](https://github.com/jarun/pdd/archive/master.zip) (*risky*).

Install to default location (`/usr/local`):

    $ sudo make install

To remove, run:

    $ sudo make uninstall

`PREFIX` is supported, in case you want to install to a different location.

#### Running standalone

`pdd` is a standalone utility. From the containing directory, run:

    $ chmod +x pdd
    $ ./pdd

### Usage

#### cmdline options

```
usage: pdd [-h] [-d yyyy mmm dd [yyyy mmm dd | y m d]]
           [-t hh:mm:ss [hh:mm:ss | h:m:s]] [--add] [--sub]
           [--day yyyy mmm dd] [-c hh:mm:ss] [-r command] [-s [resolution]] [-q]
           [keywords ...]

Tiny date, time difference calculator with timers.

positional arguments:
  keywords              diff/add/subtract from today or now

options:
  -h, --help            show this help message and exit
  -d yyyy mmm dd [yyyy mmm dd | y m d], --date yyyy mmm dd [yyyy mmm dd | y m d]
                        calculate date difference
  -t hh:mm:ss [hh:mm:ss | h:m:s], --time hh:mm:ss [hh:mm:ss | h:m:s]
                        calculate time difference
  --add                 add to date (/today) or time (/now)
  --sub                 subtract from date (/today) or time (/now)
  --day yyyy mmm dd     show day of the week on a date
  -c hh:mm:ss, --timer hh:mm:ss
                        start a countdown timer
  -r command, --run command
                        run command when countdown timer reaches 0
  -s [resolution], --stopwatch [resolution]
                        start a stopwatch [default resolution: 3 (ms)]
  -q, --quiet           quiet mode for background timer/stopwatch
```

Completion scripts are available for Bash, Fish and Zsh shells.

#### Operational notes

- ISO 8601 format. Month can be specified as month number (e.g. Jan - 1, Dec - 12).
- Time is in 24-hr format.
- The absolute difference is shown. Argument order is ignored.
- The end date is excluded in date difference calculations.
- Hour, minute or second can be omitted. Partial inputs are recognized as `mm:ss` or `ss`.
- The keybind to stop timers is <kbd>Ctrl-C</kbd>.

### Examples

1. Calculate diff from **today**:

       $ pdd 2014 Jan 15
       5y 2m 21d
       1906d

2. Calculate diff from **now**:

       $ pdd 24:00:00
       15:24:03
       55443s

       $ pdd 0
       08:36:22
       30982s

3. Calculate date diff:

       $ pdd -d 1983 jul 3 2014 1 15
       30y 6m 12d
       11154d

4. Calculate time diff:

       $ pdd -t 45:50 6:17:33
       05:31:43
       19903s

5. Show current date, time and timezone:

       $ pdd
       Fri 2019 Apr 5 08:37:25 IST

6. Specify time with roll-over:

       $ pdd -t 5:80:75 6:17:33
       00:03:42
       222s

7. Add a duration (3 years, 2 months, 1 day) to 28 Feb, 2000:

       $ pdd -d 2000 FEB 28 3 2 1 --add
       Tue 2003 Apr 29

8. Add a timeslice (1 hour 2 mins 3 secs) to 23:45:37:

       $ pdd -t 23:45:37 1:2:3 --add
       1 day(s) later, 00:47:40
       89260s

9. Add a duration (3 years, 2 months, 1 day) to **today**:

       $ pdd 3 2 1 --add
       Mon 2022 Jun 06

10. Add a timeslice (1 hour 2 minutes 3 seconds) to **now**:

        $ pdd 1:2:3 --add
        09:41:26
        34886s

11. Subtract a duration (1 day) from 1 Mar, 2000:

        $ pdd -d 2000 Mar 01 0 0 1 --sub
        Tue 2000 Feb 29

12. Subtract a timeslice (1 sec) from midnight:

        $ pdd -t 00:00:00 0:0:1 --sub
        1 day(s) earlier, 23:59:59
        -1s

13. Subtract a duration (3 years, 2 months, 1 day) from **today**:

        $ pdd 3 2 1 --sub
        Thu 2016 Feb 04

14. Subtract a timeslice (1 hour 2 minutes 3 seconds) from **now**:

        $ pdd 1:2:3 --sub
        07:40:02
        27602s

15. Show the day of the week on 15 Jan 2014:

        $ pdd --day 2014 Jan 15
        Wed

16. Start a countdown timer or stopwatch in **quiet mode** in the background:

        $ pdd -qs &
        $ pdd -qc 3:0:0 &
    To see the final counter run `fg` and press <kbd>Ctrl-C</kbd>.

17. Run a command when countdown timer reaches 0

        $ pdd -c 00:00:5 -r 'ps -aux'
        $ pdd -c 00:00:5 -r 'notify-send pdd "timer expired"'

### Copyright

Copyright © 2017 [Arun Prakash Jana](https://github.com/jarun)