如何以秒为单位生成日期和时间

时间:2017-08-17 21:02:30

标签: ruby

我目前正在PostGres数据库中保存一个时间戳,其格式为

"2017-08-17T20:42:52.724773"

我希望能够在几秒钟内翻译这个日期和时间,并能够以秒的另一种方式进行操作:“2017-08-17T20:42:52.724773”

知道如何在ruby中做到这一点

3 个答案:

答案 0 :(得分:0)

我认为您会将其转换为带有> Add-AppxProvisionedPackage -Online -FolderPath C:\Appx -SkipLicense 的红宝石时间戳,然后使用Time.parse以秒为单位获取纪元时间,如下所示:

strftime("%s")

在此处传递给time = "2017-08-17T20:42:52.724773" time.strftime("%s") 的完整选项列表:https://apidock.com/ruby/DateTime/strftime

此处有strftime更详细信息:https://ruby-doc.org/stdlib-2.1.1/libdoc/time/rdoc/Time.html

答案 1 :(得分:0)

date = DateTime.parse "2017-08-17T20:42:52.724773"
=> Thu, 17 Aug 2017 20:42:52 +0000

date.to_i
=> 1503002572

答案 2 :(得分:0)

  

我希望能够在几秒钟内翻译这个日期和时间[...]

如果您有字符串,可以parse将其添加到Time个实例中:

require 'time'

t = Time.parse('2017-08-17T20:42:52.724773')
#=> 2017-08-17 20:42:52 +0200

然后可以通过to_f提取秒(自纪元以来):

sec = t.to_f
#=> 1502995372.7247732
  

[...]并能够以其他方式进行操作

秒可以依次传递给Time::at

 t = Time.at(sec)
 #=> 2017-08-17 20:42:52 +0200

它再次返回Time个实例。这可以通过strftime格式化:

 t.strftime('%FT%T.%6N')
 #=> "2017-08-17T20:42:52.724773"