R: Convert Date from Character to Datetime

how to convert date and time from character to datetime type

As @Richard Scriven pointed out, you shouldn't be using as.Date because it's not a datetime class. Here are a few different ways:

DateTime <- "2007-02-01 00:00:00"
DateTime2 <- "02/01/2007 00:06:10"
## default format Y-m-d H:M:S
> as.POSIXct(DateTime,tz=Sys.timezone())
[1] "2007-02-01 EST"
> as.POSIXlt(DateTime,tz=Sys.timezone())
[1] "2007-02-01 EST"
##
## specify format m/d/Y H:M:S
> as.POSIXct(DateTime2,format="%m/%d/%Y %H:%M:%S",tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
> as.POSIXlt(DateTime2,format="%m/%d/%Y %H:%M:%S",tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
##
## using lubridate
library(lubridate)
> ymd_hms(DateTime,tz=Sys.timezone())
[1] "2007-02-01 EST"
> mdy_hms(DateTime2,tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"

You don't have to specify format= for as.POSIXct and as.POSIXlt when you have the %Y-%m-%d %H:%M:%S format. In other cases, like %m/%d/%Y %H:%M:%S, you usually have to specify the format explicitly.

R: convert date from character to datetime

For me it works like this:

test <- "2016-04-10T12:21:25.4278624"
z <- as.POSIXct(test,format="%Y-%m-%dT%H:%M:%OS")

#output:
z
"2016-04-10 12:21:25 CEST"

The code is form here: converting datetime string to POSIXct date/time format in R

Trying to convert character to datetime using as_datetime() but getting a wrong format in R

You should change the format to match your data, your data is separated by dash (-), so the correct format would be %d-%m-%Y %R or %d-%m-%Y %H:%M. Notice that %R is equivalent to %H:%M.

library(lubridate)

as_datetime("01-07-2020 00:00", format = "%d-%m-%Y %R")
#> [1] "2020-07-01 UTC"
as_datetime("01-07-2020 17:59", format = "%d-%m-%Y %H:%M")
#> [1] "2020-07-01 17:59:00 UTC"

Learn more about date-time conversion format here

How to convert a character column to datetime in R

As suggested by akrun. You can use dmy_hms function from lubridate package.
Here is an example.

library(lubridate)
library(dplyr)

df1 <- df %>%
mutate(x = dmy_hms(x))

data:

df <- data.frame(x="10-MAR-21 08.07.14 PM")

Convert Character date/time with am and pm to date/time format

Make the following changes:

  • use %I for the hour
  • use %p for the am/pm.
  • ensure that the format pattern is in the precise pattern of the data -- it's not in the question
  • you likely want POSIXct, not POSIXlt

thus we use this format

as.POSIXct("1/29/20 3:43pm", format = "%m/%d/%y %I:%M%p")
## [1] "2020-01-29 15:43:00 EST"

R: convert character to date-time in this form: 2018-07-01 12

You can paste the two columns and use as.POSIXct specifying the formats.

df$V3 <- as.POSIXct(paste(df$V1, df$V2), format = '%Y-%m-%d %H', tz = 'UTC')
df$V3
#[1] "2018-07-01 12:00:00 UTC" "2018-07-01 13:00:00 UTC" "2018-07-01 14:00:00 UTC"

If you don't want to remember format use ymd_h from lubridate

df$V3 <- lubridate::ymd_h(paste(df$V1, df$V2))

data

df <- structure(list(V1 = c("2018-07-01", "2018-07-01", "2018-07-01"
), V2 = 12:14), row.names = c(NA, -3L), class = "data.frame")

convert character column into datetime column in r , 04/19/19 08:46 this value is in character i need to get this in date time?

We can use as.POSIXct

df$Order.Date <- with(df, as.POSIXct(Order.Date, format = "%m/%d/%y %H:%M"))


Related Topics



Leave a reply



Submit