首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建一系列以毫秒为单位的时间戳

创建一系列以毫秒为单位的时间戳
EN

Stack Overflow用户
提问于 2018-08-10 22:27:53
回答 2查看 1.3K关注 0票数 1

我的开始日期是"2017-11-14 10:11:01 CET“,结束日期是"2017-11-15 01:15:59 CET”。我想在这些开始和结束时间戳之间创建每个500毫秒的时间戳。例如,我需要一个包含以下输出的数据帧

代码语言:javascript
复制
timestamp
2017-11-14 10:11:01.000
2017-11-14 10:11:01.500
2017-11-14 10:11:02.000
2017-11-14 10:11:02.500
.
.
.
2017-11-15 01:15:59.000

不知何故,我设法使用以下代码获得了以毫秒为单位的开始和结束日期:

代码语言:javascript
复制
start.date <- strptime("2017-11-14 10:11:01 CET", "%Y-%m-%d %H:%M:%OS")
start.date <- format(start.date, "%Y-%m-%d %H:%M:%OS3")
Output: "2017-11-14 10:11:01.000"

类似地,我的结束日期是2017-11-15 01:15:59.000。现在我想使用sequence函数来创建每500毫秒的时间戳序列。我做了一些像这样的事情

代码语言:javascript
复制
seq.POSIXt(as.POSIXct(start), as.POSIXct(end), units = "milliseconds", by = 500)

但它创造了一系列的20秒。例如,

代码语言:javascript
复制
"2017-11-14 10:11:01 CET" 
"2017-11-14 10:19:21 CET" 
"2017-11-14 10:27:41 CET"
.
.
.
"2017-11-15 01:11:01 CET"

一旦我能够得到这个系列,我还想把它转换成UNIX时间戳。有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-10 22:40:08

我不知道这是否是你要找的东西,但它似乎起作用了

代码语言:javascript
复制
seq.POSIXt(as.POSIXct(start), as.POSIXct(end), units = "seconds", by = .5)
票数 1
EN

Stack Overflow用户

发布于 2018-08-10 23:39:39

当你使用函数as.integer时,它将去掉数字的小数部分,在你的例子中是毫秒。

我建议您使用此解决方法以UNIX格式获取所需的数字。为了获得所需的输出,您可以获取函数as.integer的输出,然后在末尾附加所需的内容。由于您的UNIX时间戳将只有最后三位数字等于000或500,因此您可以尝试:

代码语言:javascript
复制
k<-as.numeric(seq.POSIXt(as.POSIXct(start.date), as.POSIXct(stop.date), units = "seconds", by = .5))[1:4]


k1<-cbind(substr(as.character(k), 1, 10),c("000","500"))

as.numeric(paste0(k1[,1],k1[,2]))
[1] 1510650661000 1510650661500 1510650662000 1510650662500

请注意,我只对向量的前4个元素执行了此操作,但逻辑保持不变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51788662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档