I'm no expert with awk, but here's something i'd like to share:
While i do agree that one-liners are cool, there are occasions it just makes no sense.
Saying, a well formated code is easier to read - and find issues/improvements, than within a one liner of that length. (me have FHD (1920x1080) display, and i need to scroll sideways)
This said, you might want to use a function (rather than an if-block) to transform time and date to seconds and to avoid things like:
... +((0*3600+0*60+0)+ ..
For which you could have just written +0.
Once you transformed the date+time to seconds, you simply subtract the one from the other and get the difference.
d1=$(date -d "20150802 11:30:45" +%s)
d2=$(date -d "20150728 16:30:45" +%s)
diff=$(( d1 - d2 )) # This gives the difference between the two dates in seconds.
Its SunOS 5.10. Only -a and-u option available. Below is op of man date.
Reformatting page. Please Wait... done
User Commands date(1)
NAME
date - write the date and time
SYNOPSIS
/usr/bin/date [-u] [ +format]
/usr/bin/date [ -a [-]sss.fff]
/usr/bin/date [-u] [ [mmdd] HHMM | mmddHHMM [cc] yy] [.SS]
/usr/xpg4/bin/date [-u] [ +format]
/usr/xpg4/bin/date [ -a [-]sss.fff]
/usr/xpg4/bin/date [-u] [ [mmdd] HHMM | mmddHHMM [cc] yy]
[.SS]
DESCRIPTION
The date utility writes the date and time to standard output
or attempts to set the system date and time. By default, the
current date and time is written.
Specifications of native language translations of month and
weekday names are supported. The month and weekday names
used for a language are based on the locale specified by the
environment variable LC_TIME. See environ(5).
The following is the default form for the "C" locale:
%a %b %e %T %Z %Y
For example,
Fri Dec 23 10:10:42 EST 1988
OPTIONS
The following options are supported:
-a [-]sss.fff Slowly adjust the time by sss.fff seconds
(fff represents fractions of a second). This
adjustment can be positive or negative. The
system's clock is sped up or slowed down
until it has drifted by the number of
seconds specified. Only the super-user may
adjust the time.
-u Display (or set) the date in Greenwich Mean
Time (GMT-universal time), bypassing the
normal conversion to (or from) local time.
SunOS 5.10 Last change: 11 May 2004 1
User Commands date(1)
OPERANDS
The following operands are supported:
+format If the argument begins with +, the output of
date is the result of passing format and the
current time to strftime(). date uses the
conversion specifications listed on the
strftime(3C) manual page, with the conver-
sion specification for %C determined by
whether /usr/bin/date or /usr/xpg4/bin/date
is used:
/usr/bin/date Locale's date and
time representation.
This is the default
output for date.
/usr/xpg4/bin/date Century (a year
divided by 100 and
truncated to an
integer) as a
decimal number [00-
99].
The string is always terminated with a NEW-
LINE. An argument containing blanks must be
quoted; see the EXAMPLES section.
mm Month number
dd Day number in the month
HH Hour number (24 hour system)
MM Minute number
SS Second number
SunOS 5.10 Last change: 11 May 2004 2
User Commands date(1)
cc Century (a year divided by 100 and truncated
to an integer) as a decimal number [00-99].
For example, cc is 19 for the year 1988 and
20 for the year 2007.
yy Last two digits of the year number. If cen-
tury (cc) is not specified, then values in
the range 69-99 shall refer to years 1969 to
1999 inclusive, and values in the range
00-68 shall refer to years 2000 to 2068,
inclusive.
The month, day, year number, and century may be omitted; the
current values are applied as defaults. For example, the
following entry:
example% date 10080045
sets the date to Oct 8, 12:45 a.m. The current year is the
default because no year is supplied. The system operates in
GMT. date takes care of the conversion to and from local
standard and daylight time. Only the super-user may change
the date. After successfully setting the date and time, date
displays the new date according to the default format. The
date command uses TZ to determine the correct time zone
information; see environ(5).
EXAMPLES
Example 1: Generating Output
The following command:
example% date '+DATE: %m/%d/%y%nTIME:%H:%M:%S'
generates as output
DATE: 08/01/76
TIME: 14:45:05
Example 2: Setting the Current Time
The following command sets the current time to 12:34:56:
example# date 1234.56
SunOS 5.10 Last change: 11 May 2004 3
User Commands date(1)
Example 3: Setting Another Time and Date in Greenwich Mean
Time
The following command sets the date to January 1st, 12:30
am, 2000:
example# date -u 010100302000
This is displayed as:
Thu Jan 01 00:30:00 GMT 2000
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment
variables that affect the execution of date: LANG, LC_ALL,
LC_CTYPE, LC_TIME, LC_MESSAGES, and NLSPATH.
TZ Determine the timezone in which the time and date
are written, unless the -u option is specified. If
the TZ variable is not set and the -u is not speci-
fied, the system default timezone is used.
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
/usr/bin/date
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWcsu |
|_____________________________|_____________________________|
| CSI | enabled |
|_____________________________|_____________________________|
/usr/xpg4/bin/date
SunOS 5.10 Last change: 11 May 2004 4
User Commands date(1)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWxcu4 |
|_____________________________|_____________________________|
| CSI | enabled |
|_____________________________|_____________________________|
| Interface Stability | Standard |
|_____________________________|_____________________________|
SEE ALSO
strftime(3C), attributes(5), environ(5), standards(5)
DIAGNOSTICS
no permission You are not the super-user and you
tried to change the date.
bad conversion The date set is syntactically
incorrect.