Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How to turn a timestamp (2017-09-17T19:25:27.9843202Z) into a os.time() value?

So im trying to make a script that gets a timestamp from productinfo of a model and takes that value away from os.time() so i know how long ago the model was updated. I have no idea how i would do this and not sure if its even possible, if it is please tell me. Thanks!

2 answers

✓ Accepted answer

That timestamp you posted is in ISO-8601.

After some Googling, I found that someone made their own function to convert this into UST (Unix Standard Time), which is what os.time() returns time as.

-- https://forum.rainmeter.net/viewtopic.php?t=23486
function TimeStamp(dateStringArg)
   
   local inYear, inMonth, inDay, inHour, inMinute, inSecond, inZone =     
  string.match(dateStringArg, '^(%d%d%d%d)-(%d%d)-(%d%d)T(%d%d):(%d%d):(%d%d)(.-)$')

   local zHours, zMinutes = string.match(inZone, '^(.-):(%d%d)$')
      
   local returnTime = os.time({year=inYear, month=inMonth, day=inDay, hour=inHour, min=inMinute, sec=inSecond, isdst=false})
   
   if zHours then
      returnTime = returnTime - ((tonumber(zHours)*3600) + (tonumber(zMinutes)*60))
   end
   
   return returnTime
end

And you can use it like this:

local t = "2017-09-17T19:25:27.9843202Z"
print(TimeStamp(t)) -- 1505676327, which seems about right.

This is really easy using multiplication.

function ConvertYear(value) --converts a year to seconds
	return value *3.154e+7
end

function ConvertMonth(value) --converts a month into seconds
	return value * 2.628e+6
end

and so on. Also, months may not be accurate as they can have 29 days, 30 days, or 31. Why would you want to convert this to seconds? It is harder to read when it is in seconds.

Hope this helps!

3 comments

0

what would value be?

0

the year like 2017

1

When you're trying to compare one date with another, converting it to seconds (typically UST) is easier than comparing each component separately.

This discussion is preserved as it was. New answers, comments, and votes are closed.