Nikki Petzer
Nikki Petzer

Reputation: 11

How can I add a midnight time stamp to dates in a column in R?

I have a column of dates in an R data frame, that look like this,

   Date
2020-08-05
2020-08-05
2020-08-05
2020-08-07
2020-08-08
2020-08-08

So the dates are formatted as 'yyyy-mm-dd'.

I am writing this data frame to a CSV that needs to be formatted in a very specific manner. I need to convert these dates to the format 'mm/dd/yyyy hh:mm:ss', so this is what I want the columns to look like:

       Date
8/5/2020 12:00:00 AM
8/5/2020 12:00:00 AM
8/5/2020 12:00:00 AM
8/7/2020 12:00:00 AM
8/8/2020 12:00:00 AM
8/8/2020 12:00:00 AM

The dates do not have a timestamp attached to begin with, so all dates will need a midnight timestamp in the format shown above.

I spent quite some time trying to coerce this format yesterday and was unable. I am easily able to change 2020-08-05 to 8/5/2020 using as.Date(), but the issue arises when I attempt to add the midnight time stamp.

How can I add a midnight timestamp to these reformatted dates?

Thanks so much for any help!

Upvotes: 1

Views: 819

Answers (3)

Brad
Brad

Reputation: 680

Try this:

format(as.POSIXct("2022-11-08", tz = "Australia/Sydney"), "%Y-%m-%d %H:%M:%S")

Upvotes: 0

Feakster
Feakster

Reputation: 556

dat <- data.frame(
  Date = as.Date("2020-08-05") + c(0, 0, 0, 2, 3, 3)
)

dat[["Date"]] <- format(dat[["Date"]], "%m/%d/%Y %I:%M:%S %p")
dat[["Date"]] <- sub("([ap]m)$", "\\U\\1", dat[["Date"]], perl = T)

dat
##                     Date
## 1 08/05/2020 12:00:00 AM
## 2 08/05/2020 12:00:00 AM
## 3 08/05/2020 12:00:00 AM
## 4 08/07/2020 12:00:00 AM
## 5 08/08/2020 12:00:00 AM
## 6 08/08/2020 12:00:00 AM

Upvotes: 0

Clemsang
Clemsang

Reputation: 5491

You can use format:

df <- data.frame(Date = as.Date(c("2020-08-05", "2020-08-07")))
format(df$Date, "%d-%m-%Y 12:00:00 AM")
[1] "05-08-2020 12:00:00 AM" "07-08-2020 12:00:00 AM"

Upvotes: 2

Related Questions