According to R Documentation:
Where possible the list elements are coerced to a common mode during the unlisting, and so the result often ends up as a character vector. Vectors will be coerced to the highest type of the components in the hierarchy NULL < raw < logical < integer < real < complex < character < list < expression: pairlists are treated as lists
Instead of using the unlist function, you can use the do.call() function as follows:
dd <- as.Date(c("2013-01-01", "2013-02-01", "2013-03-01"))
dd <- list(dd, dd)
d <- do.call("c", dd)
> d
[1] "2013-01-01" "2013-02-01" "2013-03-01" "2013-01-01" "2013-02-01" "2013-03-01"
> class(d)
[1] "Date"