This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Subtract 30 minutes from time value - 2021-05-12T19:30:00
#1
Hi

I receive time values from an API in the following format

2021-05-12T19:30:00

How can I subtract 30 minutes from the time (and also correct for date for when I receive midnight value?)

Many thanks in advance

James
Reply
#2
Use this:
Code:
str = '2021-06-01T00:00:00'

date = {}

-- assign table keys for further conversion
date.year, date.month, date.day, date.hour, date.min, date.sec =
  str:match('(%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+)')

-- convert to unix timestamp and subtract 30 minutes in seconds
timestamp = os.time(date) - 30 * 60

-- convert timestamp to table
date = os.date('*t', timestamp)

log(date)
Reply
#3
Hi

This seems to return the date as a table.

Code:
* table:
[sec]
  * number: 0
[min]
  * number: 0
[day]
  * number: 12
[isdst]
  * bool: false
[wday]
  * number: 4
[yday]
  * number: 132
[year]
  * number: 2021
[month]
  * number: 5
[hour]
  * number: 19


How can I convert this back to a string in the same format as the original time (ie: 2021-05-12T19:30:00 > 2021-05-12T19:00:00)?

Many thanks
James
Reply
#4
Code:
str = '2021-06-01T00:00:00'

date = {}

-- assign table keys for further conversion
date.year, date.month, date.day, date.hour, date.min, date.sec =
  str:match('(%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+)')

-- convert to unix timestamp and subtract 30 minutes in seconds
timestamp = os.time(date) - 30 * 60

-- convert timestamp to string
result = os.date('%Y-%m-%dT%H:%M:%S', timestamp)
log(result)
Reply
#5
This worked perfectly! Many thanks
Reply


Forum Jump: