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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 转换日期字符串";yyyy-mm-dd“;从新纪元到现在_R_Date_Format - Fatal编程技术网

R 转换日期字符串";yyyy-mm-dd“;从新纪元到现在

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" 如何将这些字符串转

我有一些数字表示从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"

如何将这些字符串转换回历元后的毫秒数?

以下是您的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)