将日期格式的字符串更改为其他格式

时间:2012-03-10 19:02:46

标签: ruby date

我有一个像这样的字符串(YYYYMMDD):

  

20120225

我想要一个像这样的字符串(MM / DD / YYYY):

  

2012年2月25日

在Ruby中执行此操作的好方法是什么?我已经考虑过将第一个字符串转换为Date,然后更改格式。或者只是处理字符串并获取我想要的部分并构建新字符串。

4 个答案:

答案 0 :(得分:18)

Parsing it然后formatting it是最佳解决方案:

Date.parse("20120225").strftime("%m/%d/%Y")  #=> "02/25/2012"

答案 1 :(得分:8)

strptime使用指定的模板解析date的字符串表示形式,并创建一个日期对象。

Date.strptime('20120225', '%Y%m%d').strftime("%m/%d/%Y")  #=> "02/25/2012"

答案 2 :(得分:4)

只是为了好玩如何:

'20120225'.unpack('A4A2A2').rotate.join('/')

答案 3 :(得分:1)

可以使用正则表达式:

s1 = '20120225'
s2 = "$2/$3/$1" if s1 =~ /(\d{4})(\d{2})(\d{2})/

或者,如果您确定字符串的格式并存在性能问题,我认为最佳解决方案是

s2 = s1[4..5] + '/' + s1[6..7] + '/' + s1[0..3]

但如果您没有性能需求,我认为Andrew Marshall的解决方案更好,因为它会检查日期的有效性。