【问题标题】:R: Removing hour,min,sec from date [duplicate]R:从日期中删除小时,分钟,秒[重复]
【发布时间】:2019-02-20 10:17:19
【问题描述】:

我有一个数据框包含一个日期列,它采用 POSIXCT 格式,如下所示

"2019-02-18 00:00:31 IST"

我想要以下格式的日期

 "2019-02-18" 

但是当我申请时

 x = as.Date( DATE ,"%Y%m%d") 

它给出以下警告

Warning message:
In as.POSIXlt.POSIXct(x, tz = tz) : unknown timezone '%Y%m%d'

而且我的输出错误(前一天)输出

"2019-02-17"

请告诉我出了什么问题。

【问题讨论】:

  • 我想尝试不使用 lubridate
  • 查看其他欺骗目标。很多人都问过这个问题。
  • 在这种情况下无需指定任何格式。就做as.Date("2019-02-18 00:00:31 IST")
  • @RonakShah 它将转换为前一天
  • 那么这是您的系统区域设置问题。您所在的时区与字符串中提供的时区不同。

标签: r date dataframe


【解决方案1】:

您也可以使用strftime()

strftime(d, format="%Y-%m-%d")
[1] "2019-02-18"

使用format=,您基本上可以选择要提取的内容。它甚至可以使用"%Y" 来提取年份组件。

数据:

d <- as.POSIXlt("2019-02-18 00:00:31 IST")

【讨论】:

  • 它正在将日期转换为字符格式
  • as.POSIXct()as.Date() 将返回日期格式。
【解决方案2】:

一种选择是将 POSIXct 日期时间转换为一个字符,然后取前 10 个字符:

date <- as.POSIXct("2019-02-18 00:00:31", format="%Y-%m-%d %H:%M:%OS", tz="Asia/Kolkata")
date
date.str <- as.character(date)
substr(date.str, 1, 10)

[1] "2019-02-18 00:00:31 IST"
[1] "2019-02-18"

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多