How do I change this date MON, MAY 29 2017 2:05 pm with roDateTime to asSeconds
' Convert date from this format: "MON, MAY 29 2017 2:05 pm" to seconds '
function dateStrToSecs(dateStr) as Integer
months = {
jan: "01",
feb: "02",
mar: "03",
apr: "04",
may: "05",
jun: "06",
jul: "07",
aug: "08",
sep: "09",
oct: "10",
nov: "11",
dec: "12"
}
re = CreateObject("roRegex", "([A-Z]+)\s*(\d{1,2})\s*(\d{4})\s*(\d{1,2}):(\d{2})\s*(am|pm)", "i")
ma = re.Match(dateStr)
if ma.Count() <> 7
print "Invalid date format"
return 0
end if
yyyy = ma[3]
mon = months[ma[1]]
dd = Right("0" + ma[2], 2)
hhInt = ma[4].ToInt()
mm = ma[5]
ampm = ma[6]
if LCase(ampm) = "pm" and hhInt < 12 then hhInt = hhInt + 12
hh = Right("0" + hhInt.ToStr(), 2)
isoStr = yyyy + "-" + mon + "-" + dd + " " + hh + ":" + mm + ":00"
print isoStr
dt = CreateObject("roDateTime")
dt.FromISO8601String(isoStr)
return dt.AsSeconds()
end function
“belltown” wrote:
' Convert date from this format: "MON, MAY 29 2017 2:05 pm" to seconds ' function dateStrToSecs(dateStr) as Integer months = { jan: "01", feb: "02", mar: "03", apr: "04", may: "05", jun: "06", jul: "07", aug: "08", sep: "09", oct: "10", nov: "11", dec: "12" } re = CreateObject("roRegex", "([A-Z]+)\s*(\d{1,2})\s*(\d{4})\s*(\d{1,2}):(\d{2})\s*(am|pm)", "i") ma = re.Match(dateStr) if ma.Count() <> 7 print "Invalid date format" return 0 end if yyyy = ma[3] mon = months[ma[1]] dd = Right("0" + ma[2], 2) hhInt = ma[4].ToInt() mm = ma[5] ampm = ma[6] if LCase(ampm) = "pm" and hhInt < 12 then hhInt = hhInt + 12 hh = Right("0" + hhInt.ToStr(), 2) isoStr = yyyy + "-" + mon + "-" + dd + " " + hh + ":" + mm + ":00" print isoStr dt = CreateObject("roDateTime") dt.FromISO8601String(isoStr) return dt.AsSeconds() end function
Thanks for your help but does not match the date
[upload|5hC+oClX90XLJNlA6vNPdg==]
“xoceunder” wrote:
Thanks for your help but does not match the date
I’m not sure what you mean by “does not match the date”.
One possibility is that your roDateTime object needs to be in the local time zone. If this is the case then after this code:
dt = CreateObject("roDateTime")
dt.FromISO8601String(isoStr)
add this line:
dt.ToLocalTime()
“belltown” wrote:
“xoceunder” wrote:
Thanks for your help but does not match the date
I’m not sure what you mean by “does not match the date”.One possibility is that your roDateTime object needs to be in the local time zone. If this is the case then after this code:
dt = CreateObject("roDateTime") dt.FromISO8601String(isoStr)add this line:
dt.ToLocalTime()
Adding this dt.ToLocalTime () adds me 4 hr and without this dt.ToLocalTime () takes me 4 hr :shock:
