I need a one-line UNIX shel command to add or subtract seconds or hours from a date.

I need a one-line command to add or subtract seconds or hours from a date.  I have the pieces but I can't put them together in a one-line command.  I have to build this command on the fly in my EDI mapper so I can't write and execute a regular multi-line script from a .sh file.  It all has to fit on one line and called in one shot.  

Current time = 20081119 14:22

date +%s

And then I can calculate a time 1 hour ago
expr 1227122553 - 3600

and them put it back together as a date in proper format

date -d @1227118953 '+%Y%m%d %H:%M'
20081119 13:22

Now how do I string this into a one-line command to get the date, add/subtract x amount of seconds and then convert back to date format (ie: 20081119 12:21:14)?    

Something like this but this does't work - "date -d @ {expr date+%s - 3600} '+%Y%m%d %H:%M''"

Who is Participating?
TintinConnect With a Mentor Commented:

If you simply want the time 1 hour ago, you can do

date --date '1 hour ago' +'%Y%m%d %H:%M'
works in ksh:

date -d @$(($(date  '+%s')-3600)) '+%Y%m%d %H:%M'


Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.