在Epoch和Back中将Ruby时间戳转换为秒

Mic*_*ria 35 ruby ruby-on-rails

我的数据库中有一个存储为时间戳的字段,我需要在EPOCH时间内以秒为单位输出.

ber*_*ghe 50

假设您的时间戳是Ruby Time对象:

puts time_stamp.strftime('%s')
puts time_stamp.to_i
timestamp = Time.at(628232400)
Run Code Online (Sandbox Code Playgroud)

如果它是DateTime对象,您可以使用strftimestrptime方法.

  • @JakeRobb,这几乎不是一个“盲目的假设”,因为它在规范中(https://ruby-doc.org/core-3.1.2/Time.html#method-i-to_i),但我确实同意“tv_sec”有点更具描述性,尽管前缀“tv”本身可能更好。 (2认同)

Sac*_*n R 35

返回自纪元以来的秒数:

time = Time.now.to_i  
Run Code Online (Sandbox Code Playgroud)

从epoch开始返回第二个,包括微秒:

time = Time.now.to_f
Run Code Online (Sandbox Code Playgroud)

  • 这没有回答我的问题,我想知道如何将Ruby Time类转换为Epoch Unix秒,而不是相反. (3认同)

Mar*_*n K 12

Time.now.to_i 
Run Code Online (Sandbox Code Playgroud)

返回大纪元.同样适用于:

time = Time.now
time.to_i
Run Code Online (Sandbox Code Playgroud)