How to convert between year,month,day and dates in R?

I know one can do this via strings, but I would prefer to avoid converting to strings, partly because maybe there is a performance hit?, and partly because I worry about regionalization issues, where some of the world uses "year-month-day" and some uses "year-day-month".

It looks like ISODate provides the direction year,month,day -> DateTime , although it does first converts the number to a string, so if there is a way that doesn't go via a string then I prefer.

I couldn't find anything that goes the other way, from datetimes to numerical values? I would prefer not needing to use strsplit or things like that.

Edit: just to be clear, what I have is, a data frame which looks like:

year month day hour somevalue
2004 1     1   1   1515353
2004 1     1   2   3513535
....

I want to be able to freely convert to this format:

time(hour units) somevalue
1             1515353
2             3513535
....

... and also be able to go back again.

Edit: to clear up some confusion on what 'time' (hour units) means, ultimately what I did was, and using information from How to find the difference between two dates in hours in R?:

forwards direction:

lh$time <- as.numeric( difftime(ISOdate(lh$year,lh$month,lh$day,lh$hour), ISOdate(2004,1,1,0), units="hours"))
lh$year <- NULL; lh$month <- NULL; lh$day <- NULL; lh$hour <- NULL

backwards direction:

... well, I didnt do backwards yet, but I imagine something like:

  • create difftime object out of lh$time (somehow...)
  • add ISOdate(2004,1,1,0) to difftime object
  • use one of the solution below to get the year,month,day, hour back
Edit
Report