Rounding time to nearest quarter hour
You can use round
. The trick is to divide by 900 seconds (15 minutes * 60 seconds) before rounding and multiply by 900 afterwards:
a <-as.POSIXlt("2012-05-30 20:41:21 UTC")b <-as.POSIXlt(round(as.double(a)/(15*60))*(15*60),origin=(as.POSIXlt('1970-01-01')))b[1] "2012-05-30 20:45:00 EDT"
To get only hour and minute, just use format
format(b,"%H:%M")[1] "20:45"as.character(format(b,"%H:%M"))[1] "20:45"