如何转换时间和日期

3

我有一个问题。如何将日期和时间的格式 20110711201023 转换为小时数。这是我用来进行图像分析的软件输出的,我不能改变它。定义开始日期和时间非常重要。 格式: 2011年07月11日20时10分23秒。 示例:

Starting Data and Time - 20110709201023,
First Data and Time - 20110711214020
Result = 49,5h.

我有1万条这种格式的数据,因此不想手动处理。如果有任何建议,我将非常感激。

1个回答

3

最好先使用strptime将其转换为真正的R时间对象:

time_obj = strptime("20110711201023", format = "%Y%m%d%H%M%S")

如果你同时对开始日期和结束日期进行这样操作,那么你只需要说:

end_time - start_time 

要得到以秒为单位的差值,这很容易转换为小时数。要将整个时间字符串列表转换,只需执行以下操作:

time_vector = strptime(dat$time_string, format = "%Y%m%d%H%M%S")

其中dat是包含数据的数据框,time_string是包含时间字符串的列。请注意,strptime也适用于向量(它是矢量化的)。您还可以将新的时间向量作为dat的一部分:

dat$time = strptime(dat$time_string, format = "%Y%m%d%H%M%S")

更优雅的写法是(至少如果你和我一样讨厌$):
dat = within(dat, { time = strptime(dat$time_string, format = "%Y%m%d%H%M%S") }) 

2
为了避免出现不愉快的意外,我建议在进行日期时间转换时,始终指定时区。strptime 有一个名为 tz 的参数,例如,您可以使用 strptime("20110711201023", format = "%Y%m%d%H%M%S",tz="GMT") - Roland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接