Rails 使用#{DateTime.now} 重新格式化日期时间

Rails DateTime re-format using #{DateTime.now}

我在 Rails 中有一项任务导出一个 xml,但我在其中有一行

tmp_filename="#{Rails.root}/tmp/orders-#{o.id}-#{DateTime.now}.xml"

这会输出文件名类似于

的 xml 文件
orders-42-2015-01-28T17:22:35+00-00.xml

这是它直接上传到 amazon s3 时的显示方式,问题是我需要去掉冒号,只添加破折号,因为获取这些文件的系统不能正常使用冒号在文件名中。

奇怪的是,当我从 s3 下载文件时,它下载为破折号。 我不确定如何或是否可以在 #{} 上使用 strftime 任何人都可以帮助我做的事情。或者,如果这只是一个 amazon s3 的东西,并且文件实际上是用 - 而不是 : already 生成的。

Strftime 在 amazon s3 上似乎不起作用,即使添加

文件仍以原始格式上传
tmp_filename="#{Rails.root}/tmp/orders-#{o.id}-#{DateTime.now.strftime('%d-%m-%Y-%H%M%S')}.xml"

而且由于某些我无法摆脱的原因,它还在最后添加了一个额外的 +00:00

你不能只格式化不带冒号的 DateTime,例如:

tmp_filename="#{Rails.root}/tmp/orders-#{o.id}-#{DateTime.now.strftime('%Y-%m-%d-%H-%M-%S')}.xml"

有了这个,您将获得如下格式的时间,不带冒号:

irb(main):010:0> DateTime.now.strftime('%Y-%m-%d-%H-%M-%S')
=> "2015-01-29-10-50-30"