15

我正在尝试为 Rails 迁移生成时间戳,作为 rake 任务的一部分,我将其从引擎复制到我的应用程序中。

以下工作正常,但由于 rails 已经做了同样的事情,我不知道是否有更好的方法来做到这一点?

Time.now.to_s.split(" ")[0..1].join(" ").gsub!(/\D/, "")
4

4 回答 4

42
@timestamp = Time.now.strftime("%Y%m%d%H%M%S")
于 2013-09-13T14:20:07.007 回答
11
Time.now.utc.strftime("%Y%m%d%H%M%S")
于 2017-01-17T09:49:33.170 回答
2

您可以使用timestamp.to_s(:number)

还有其他格式:

:db            # => "2007-12-04 00:00:00"
:number        # => "20071204000000"
:short         # => "04 Dec 00:00"
:long          # => "December 04, 2007 00:00"
:long_ordinal  # => "December 4th, 2007 00:00"
:rfc822        # => "Tue, 04 Dec 2007 00:00:00 +0000"
:iso8601       # => "2007-12-04T00:00:00+00:00"
于 2019-03-29T14:13:02.317 回答
1

所以这可能是我在 SO 上创建的最元的答案。接受的答案和@mambo 的答案是正确的

Time.now.utc.strftime("%Y%m%d%H%M%S")

但。

如果您搜索(SO 直接或 Google)“如何创建像 Rails 迁移文件名这样的时间戳?” 它不会把你带到这里。但是,如果你开始输入它作为你的问题标题,它会很幸运地显示这个答案

因此,我没有提出一个关于如何使用 Ruby 创建分代日期时间的高度重复的问题,而是在这个答案中添加了希望被搜索算法拾取的关键字,并为像我这样的未来提问者回答这个问题。

于 2019-01-29T12:16:19.220 回答