我有一个像这样的字符串(YYYYMMDD):
20120225
我想要一个像这样的字符串(MM / DD / YYYY):
2012年2月25日
在Ruby中执行此操作的好方法是什么?我已经考虑过将第一个字符串转换为Date,然后更改格式。或者只是处理字符串并获取我想要的部分并构建新字符串。
答案 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的解决方案更好,因为它会检查日期的有效性。