Because as.POSIXct.Date does not search for the time zone (and will not pass it to .POSIXct if you specify it in ... ), and Date objects are "UTC", so your POSIXct offset from the UTC of the Date object.
Better call as.POSIXct in the character string directly if you can:
> as.POSIXct("2014-07-08", format="%Y-%m-%d") [1] "2014-07-08 BRT"
source share