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

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

20120225

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

2012年2月25日

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

解析它然后格式化它是最好的解决方案:

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

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

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

只是为了好玩怎么样:

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

正则表达式可以:

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

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

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

但如果你没有性能需求,我认为安德鲁马歇尔的解决方案更好,因为它检查日期的有效性。