我在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
答案 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"