从lubridate日期时间对象中提取时间(HMS)?

时间:2018-06-07 08:39:10

标签: r date lubridate

我有以下日期时间:

  

t< - “2018-05-01 23:02:50 UTC”

我想把它拆分为时间和日期。

当我申请日期(t)时,我会得到日期部分。 但是当我使用lubridate的hmsparse_date_time和其他函数以"HMS"顺序执行此操作时,我得到NA

我已在SOF上查看了其他答案,但出于某种原因,它给了我NA

请告知如何提取它。

我想了解原因:

strftime(t, format="%H:%M:%S") 

将完成这项工作,但我在lubridate::hmsparse_date_time

中缺少什么

6 个答案:

答案 0 :(得分:2)

const dataArray = [ { title: "First Element", content:"" }, { title: "Second Element", content: "content1" }, { title: "Third Element", content: "content2" } ]; class LocationScreen extends Component { state = { dataSource: dataArray, //init state with your static data } componentDidMount(){ return fetch('https://facebook.github.io/react-native/movies.json ') .then((response) => response.json()) .then((responseJson) => { this.setState({ isLoading: false, dataSource: responseJson.data, }, function(){ }); }) .catch((error) =>{ console.error(error); }); } render() { return ( <Container> <Content padder> <Accordion dataArray={this.state.dataSource} // changed to this.state.dataSource /> </Content> </Container> ); } 的{​​{1}}中所缺少的是,它期望以“小时分钟秒三元组的字符向量”作为参数。没有处理包含日期信息的字符串的规定。因此,lubridatehms()的输出不能作为Sys.Date()的输入。

如果您想要lubridate::now()解决方案,请使用以下解决方案:

lubridate::hms()

reprex package(v0.2.0)于2018-08-13创建。

答案 1 :(得分:1)

这样的东西?

  library(hms)
    t <- "2018-05-01 23:02:50 UTC"
    unlist(strsplit(t," "))[2]%>%hms::parse_hms()

答案 2 :(得分:1)

我的解决方案是安装library(anytime)

date <- anytime::anydate(t)
time <- strftime(t, format="%H:%M:%S")

答案 3 :(得分:1)

这是您要找的东西吗?现在可以使用hms :: as_hms更简单地完成它。

> library(lubridate)
> library(hms)
> as_hms(ymd_hms("2018-05-01 23:02:50 UTC"))
23:02:50

> t <- "2018-05-01 23:02:50 UTC"
> as_hms(ymd_hms(t))
23:02:50

答案 4 :(得分:1)

这是一个不包含其他包(hms 之上的lubridate)的解决方案:

t <- "2018-05-01 23:02:50 UTC"

sprintf("%02d:%02d:%02d", hour(t), minute(t), second(t))

"23:02:50"

答案 5 :(得分:-1)

存在Lubridate软件包中的功能,它称为“ hour()”,此处为官方指南: https://lubridate.tidyverse.org/reference/hour

t <- "2018-05-01 23:02:50 UTC"

lubridate::hour(t)