当我的字符串为空时,如何阻止Time.parse返回当前日期?

时间:2013-04-23 18:05:02

标签: ruby

我有几个地方使用Time.parse(string).strftime("%m%d%Y")来获取不同字符串的日期。

有时这些字符串可以为空''。当我用Time.parse解析一个空字符串时,它会给我当前的日期。

我需要一种方法来阻止这种情况发生并返回''或什么都没有。我的问题有解决方案吗?

require 'Time'
s = ''
Time.parse(s).strftime("%m%d%Y")
=> "04232013"

我正在使用Ruby 1.8.7(2010-12-23 patchlevel 330)[i386-mingw32]

3 个答案:

答案 0 :(得分:8)

单独处理。

def format_date s
  return if s.empty?
  Time.parse(s).strftime("%m%d%Y")
end

答案 1 :(得分:6)

也许推荐的方式是

Time.parse(s).strftime("%m%d%Y") unless s.empty?

如果不满足条件,则评估为nil

答案 2 :(得分:1)

require "time"
s = '12/12/2013 05:23:11'
p s.empty? ? '' : Time.parse(s).strftime("%m%d%Y") #=> "12122013"
s = ''
p s.empty? ? '' : Time.parse(s).strftime("%m%d%Y") #=> ""