The arithmetic that David describes should work fine (POSIXct is internally in UTC) unless you are in the Chatham Islands (which has a UTC+12:45 time zone [1]) or Nepal (UTC+05:45 [2]) or some such place with a funny idea about when the 1/2 hour mark is.

The formatting of the output may be tricky, if the original poster really want the (past/future) time zone as opposed to the current one, which is what his text could be read to suggest.

Good test cases would be "2010-03-28 01:46:00 GMT" which should (presumably) round to "2010-03-28 03:00:00 BST" and "2010-10-31 02:46 BST" which probably rounds to "2010-10-31 02:00 GMT". I can't quite get it to work in R, but it should be possible....


Allan

[1] https://secure.wikimedia.org/wikipedia/en/wiki/UTC%2B12:45
[2] https://secure.wikimedia.org/wikipedia/en/wiki/UTC%2B05:45

On 23/07/10 16:35, David Winsemius wrote:

On Jul 23, 2010, at 11:20 AM, <murali.me...@avivainvestors.com> <murali.me...@avivainvestors.com> wrote:

Hi folks,

I've got a POSIXct datum as follows:

Sys.time()
[1] "2010-07-23 11:29:59 BST"

I want to convert this to the nearest half-hour, i.e., to "2010-07-23 11:30:00 BST"

(If the time were "11:59:ss", I want to convert to "12:00:00").

How to achieve this?

Couldn't you just coerce to numeric, divide by 60(sec)*30(half-hour minutes), round to integer, multiply by 60*30, coerce to POSIXct?

_
David Winsemius, MD
West Hartford, CT


______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to