如何在R语言中将时间戳字符串"1515511826000"转换为指定日期格式
没问题,这个需求在R里轻松就能搞定!你提供的"1515511826000"是13位毫秒级时间戳,和常用的10位秒级时间戳不一样,所以第一步得先做单位转换,再转成你要的YYYY-MM-DD HH:MM:SS格式。
我给你两种实现方式,你可以选顺手的来:
方式一:用基础R函数
不需要额外安装包,直接用内置函数就能搞定:
# 定义原始时间戳字符串 timestamp_str <- "1515511826000" # 把字符串转成数值,再除以1000转换成秒级时间戳 timestamp_sec <- as.numeric(timestamp_str) / 1000 # 转换为日期时间对象并格式化 formatted_date <- format( as.POSIXct(timestamp_sec, origin = "1970-01-01", tz = "UTC"), format = "%Y-%m-%d %H:%M:%S" ) # 输出结果 print(formatted_date)
方式二:用lubridate包(更简洁)
lubridate是R里处理日期时间的神器,代码会清爽很多:
# 第一次用先安装包 # install.packages("lubridate") library(lubridate) timestamp_str <- "1515511826000" # 一步转成日期时间再格式化 formatted_date <- format( as_datetime(as.numeric(timestamp_str)/1000, tz = "UTC"), "%Y-%m-%d %H:%M:%S" ) print(formatted_date)
关键注意点
- 一定要除以1000!如果直接用13位数值转日期,会得到远未来的错误结果(因为R默认按秒处理时间戳)。
tz参数要和原始日期的时区对应,你给出的原始日期是UTC时区的0点,所以用tz = "UTC"就能得到正确结果;如果你的数据是其他时区,替换成对应的时区字符串就行(比如"Asia/Shanghai")。
运行代码后会得到格式化后的日期:"2018-01-09 00:00:26"(注:你的时间戳对应的实际时间比你提到的January 9th 2018, 00:00:00.000晚26秒,可能是原始记录的小偏差哦)
内容的提问来源于stack exchange,提问作者Kiwi
相关产品推荐
相关产品推荐

