Rails DateTime使用#{DateTime.now}重新格式化

时间:2015-01-29 09:43:46

标签: ruby-on-rails ruby datetime amazon-s3 strftime

我在Rails中有一个导出xml的任务,我在其中只有一行

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

并输出xml文件,文件名为

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

这是它直接上传到亚马逊s3时出现的方式,问题是我需要摆脱冒号并且只是破折号,因为采取这些文件的系统无法正常使用冒号文件名。

奇怪的是,当我从s3下载文件时,它会以破折号的形式下载。 我不确定我是否可以在#{}上使用strftime 任何人都可以帮助我正在尝试做什么。或者,如果这只是一个亚马逊s3的事情,文件实际上是用 - 而不是:已经生成。

Strftime似乎不适用于亚马逊s3,即使添加

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

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

1 个答案:

答案 0 :(得分:3)

您不能只使用冒号格式化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"
相关问题