' 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
"xoceunder" wrote:
Thanks for your help but does not match the date
dt = CreateObject("roDateTime")
dt.FromISO8601String(isoStr)
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()