Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将日期和时间从字符类型转换为日期时间类型_R_Date_Datetime - Fatal编程技术网

R 如何将日期和时间从字符类型转换为日期时间类型

R 如何将日期和时间从字符类型转换为日期时间类型,r,date,datetime,R,Date,Datetime,您好,我该如何将其转换为datetime类型的对象,该对象同时保留日期和时间 DateTime="2007-02-01 00:00:00" 尝试 但不返回时间部分。在尝试了strtime和lubridate之后,我想不出怎么做。谢谢。正如@Richard Scriven所指出的,您不应该将用作.Date,因为它不是datetime类。以下是几种不同的方法: DateTime <- "2007-02-01 00:00:00" DateTime2 <- "02/01/2007 00:0

您好,我该如何将其转换为datetime类型的对象,该对象同时保留日期和时间

DateTime="2007-02-01 00:00:00"
尝试


但不返回时间部分。在尝试了strtime和lubridate之后,我想不出怎么做。谢谢。

正如@Richard Scriven所指出的,您不应该将
用作.Date
,因为它不是datetime类。以下是几种不同的方法:

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"
DateTime as.POSIXlt(DateTime,tz=Sys.timezone())
[1] “2007-02-01美国东部时间”
##
##指定格式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美国东部时间”
>as.POSIXlt(DateTime2,format=“%m/%d/%Y%H:%m:%S”,tz=Sys.timezone())
[1] “2007-02-01 00:06:10美国东部时间”
##
##使用润滑剂
图书馆(lubridate)
>ymd_hms(DateTime,tz=Sys.timezone())
[1] “2007-02-01美国东部时间”
>mdy_hms(DateTime2,tz=Sys.timezone())
[1] “2007-02-01 00:06:10美国东部时间”

当具有
%Y-%m-%d%H:%m:%S
格式时,不必为
as.POSIXct
as.POSIXlt
指定
format=
。在其他情况下,如
%m/%d/%Y%H:%m:%S
,通常必须明确指定格式

如果您想专门将“2007-02-01 00:00:00”转换为日期类对象,则需要执行以下操作。这是基于


print.POSIXct
as.Date
仅返回日历日期,因为类
Date
对象仅显示为日历日期。我可能错了。但是,在我看来,OP希望保持日期和时间在字符串中<代码>2007-02-01 EST
可能不是OP想要的,因为它在结果中不包含
00:00:00
。嗯,这是一个公平的观点。我知道如果你有一个日期时间是
00:00:00
,另一个日期时间是
data.frame
中的HMS非零,等等。。。它打印零,即
data.frame(x=c(as.POSIXct(DateTime,tz=Sys.timezone()),as.POSIXct(DateTime,tz=Sys.timezone())+1))
(使用上述对象);我会看看是否有一种方法可以通过单独的时间戳来实现。谢谢!hms似乎不是以DateTime格式显示的,而是以DateTime2格式显示的。对-这只发生在午夜(
00:00:00
)-并且它仍然保留信息(它只是不会打印)。如果你在其他非午夜时间查看这样的时间戳,它会显示零,就像我在上面的评论中所说的那样,否则你必须修改格式以避免这种行为,就像@jazzurro的解决方案一样。除非你能在文档中找到它,否则我认为这将是一个非常好的问题。例如,加载
lubridate
后,尝试
dt
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"
print.POSIXct <- function(x,...)print(format(x,"%Y-%m-%d %H:%M:%S"))
x <- "2007-02-01 00:00:00"
x <- as.POSIXct(x,tz=Sys.timezone())
x