DateTime到时间转换

时间:2014-06-18 14:42:37

标签: ruby datetime time

我有两个日期时间,需要确定它们之间的秒数。它们的创建方式如下:

date_time1 = DateTime.strptime("01-15-2014 01:11:12 PM", '%m-%d-%Y %l:%M:%S')
date_time2 = DateTime.now

所以他们看起来像这样:

date_time1: 2014-01-15T01:11:12+00:00
date_time2: 2014-01-16T00:11:12+10:00

如何找到两个日期之间的秒数?我已经尝试转换为时间但.to_time函数对我不起作用,因为时区显然没有设置。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

to_time 工作。它会将两次转换为您当地的时区,但在减去它们时没有任何区别。这绝对有效:

date_time2.to_time - date_time1.to_time

你真正的问题是你没有解析PM,这就是为什么你的差异会在12小时后结束!看看你的例子

date_time1 = DateTime.strptime("01-15-2014 01:11:12 PM", '%m-%d-%Y %l:%M:%S')
# date_time1: 2014-01-15T01:11:12+00:00

你要求UTC时间下午1点11分,但它告诉你date_time1是1:11 AM 。您需要添加到格式字符串

'%m-%d-%Y %l:%M:%S %p'

如果您仍然持怀疑态度,请点击我的时区示例。

d1 = DateTime.now
#<DateTime: 2014-06-18T11:47:22-04:00 ((2456827j,56842s,704352659n),-14400s,2299161j)>
d1.to_time - DateTime.strptime("06-18-2014 03:47:00 PM", '%m-%d-%Y %l:%M:%S %p').to_time
# 22.704352659

请注意,UTC时间下午3:47 UTC是11:47(d1的时区),所以~22秒是正确答案。

修改

但是,如果要在计算偏移量之前将它们更改为在同一时区,则可以执行以下操作:

date_time2.to_time - (date_time1 - date_time2.offset).to_time