R 转换日期字符串";yyyy-mm-dd“;从新纪元到现在
我有一些数字表示从1970年1月1日星期四00:00:00协调世界时(UTC)开始的日期(毫秒)R 转换日期字符串";yyyy-mm-dd“;从新纪元到现在,r,date,format,R,Date,Format,我有一些数字表示从1970年1月1日星期四00:00:00协调世界时(UTC)开始的日期(毫秒) 1365368400000, 1365973200000, 1366578000000 我正在将它们转换为日期格式: as.Date(as.POSIXct(my_dates/1000, origin="1970-01-01", tz="GMT")) 答复: [1] "2013-04-07" "2013-04-14" "2013-04-21" 如何将这些字符串转
1365368400000,
1365973200000,
1366578000000
我正在将它们转换为日期格式:
as.Date(as.POSIXct(my_dates/1000, origin="1970-01-01", tz="GMT"))
答复:
[1] "2013-04-07" "2013-04-14" "2013-04-21"
如何将这些字符串转换回历元后的毫秒数?以下是您的javascript日期
x <- c(1365368400000, 1365973200000, 1366578000000)
根据注释,有时可能会出现数值舍入错误,导致x
和z
不一致。对于这样的数值比较,请使用:
library(testthat)
expect_equal(x, z)
我将提供一个简单的框架来处理各种类型的日期编码以及如何返回。使用R包“lubridate”,使用period和interval类可以很容易地实现这一点 在处理天数时,可以很容易地使用as.numeric(Date)来获得自纪元以来的日期数。要获得任何小于一天的时间单位,可以使用各种因子(24小时,24*60分钟等)进行转换。然而,数月后,数学可能会变得有点棘手,因此在许多情况下,我更喜欢使用这种方法
库(lubridate)
as.period(间隔(开始=纪元,结束=日期),单位=月)@month
通过应用因子,可以将其用于年、月、日、小时、分钟和更小的单位
走另一条路,比如从大纪元起被给予几个月:
库(lubridate)
纪元%m+%as.期间(日期,单位为“月”)
我用了几个月的时间介绍了这种方法,因为它可能更复杂。使用句点和间隔的一个优点是,它可以很容易地调整到任何历元和单位。在
-
处的日期字符串,从月份部分减去1(javascript月份是以零为基础的),用这些部分调用构造函数(可能使用date.UTC
),然后调用这个新的Date
对象来获取自历元以来的毫秒数。这里有很多例子,所以这不是一个Javascript问题?从epoch开始的毫秒并不是一个纯粹的Javascript概念。最好从问题中删除Javascript标记,从标题中删除R
,因为它已经是一个标记。Richie Cotton,当我尝试从控制台复制函数as.Date(x/86400000,origin=“1970-01-01”)日期并手动将其添加到向量中,然后应用函数:as.numeric(y)*86400000时,我得到的结果不完全相同。也许你知道为什么?他是我的代码:gyazo.com/b97add60821fdb801be112addc5db6f5
z <- as.numeric(y) * 86400000
stopifnot(identical(x, z))
library(testthat)
expect_equal(x, z)