14

I want to get the date 3 minutes on the future. For example, if "now" is

01-Jan-70 00:00:00 GMT 

I want to get

01-Jan-80 00:03:00 GMT

How should I do it? I'm working with busybox linux.

1
  • 8
    I like how it's 3 minutes and 10 years... subtle!
    – lornix
    Oct 15, 2011 at 11:41

3 Answers 3

18

With GNU date you can do it as simple as this:

date --date="3min"

But busybox seems not so smart (yet). The only reliable solution I came up with using bb is:

busybox date -D '%s' -d "$(( `busybox date +%s`+3*60 ))"

(you don't need the busybox parts if there is no other date implementation present)

If you want a formatted output, you could add this

busybox date -D '%s' +"%y%m%d%H%" -d "$(( `busybox date +%s`+3*60 ))"
2
  • I have not found why yet but this does not seem to be compatible with latest's alpine with busybox: docker run -it alpine ash -c 'busybox date -D "%s" -d "$(( "$(busybox date +%s)"+3*60 ))"' returns date: invalid date '1617211960'
    – hugoShaka
    Mar 31, 2021 at 17:30
  • 1
    The correct syntax seems to be busybox date -d@"$(( `busybox date +%s`+3*60 ))"
    – hugoShaka
    Mar 31, 2021 at 18:34
10

Working solution on alpine linux

date -d@"$(( `date +%s`+180))"
1
  • 2
    Please elaborate about your command, as to how it works and such. Also, why does not the original solution work for you. May 9, 2018 at 10:50
1

I had to set the date for +2 hours on busybox OS on my router my command:

date "$(date +%m%d"$(( `date +%H`+2 ))"%M%Y.%S)"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.