从命令行获取特定时间不起作用
Taking a specific time from command line is not working
我有一个程序,可以计算很多东西。虽然我 运行 ruby code.rb 的代码一切正常。问题开始了,当我想通过带有附加选项的命令行 运行 它时:ruby code.rb --time 201712121100.
有问题的代码如下:
include Options #here I have some options to choose, like --time
def calculate_p(time, mode)
if mode
calculator = calc1
else
calculator = calc2
end
calculate_t(time, calculator)
end
def calculate_t(time, calculator)
date_ymd = time.strftime("%Y%m%d")
time_hm = time.strftime("%H%M")
calculator
.with(date_ymd, time_hm)
.run do |result|
if result.ok?
result.stdout.pop.split.first
else
msgw("Program returned with errors.", :error)
msgw("stdout: %s; stderr: %s" % [result.stdout, result.stderr], :error)
false
end
end
end
time = Options.get('--time')
.andand do |time_op|
msgw('Taking time from command line arguments') do
time_op.pop.andand
end
end || msgw('Calculating time for now.') do
Time.now.utc
end || abort
calc=calculate_p(time, mode)
msgw
只是定义打印消息。
mode
采用 true
或 false
值。
我收到一个错误:
"calculate_t
: undefined method strftime
for "201712121100":String
(NoMethodError
)"
我做错了什么?为什么使用 Time.now.utc
有效而给出特定时间却无效?
我也从这里查看了解决方案Rails undefined method `strftime' for "2013-03-06":String
Date.parse() 给出相同的错误。
问题在这里:
time_op.pop.andand
time_op
从命令行取的是一个字符串,需要一个Time
实例。得到它,使用 DateTime#strptime
:
DateTime.strptime(time_op.pop, "%Y%m%d%H%M").to_time.andand
我有一个程序,可以计算很多东西。虽然我 运行 ruby code.rb 的代码一切正常。问题开始了,当我想通过带有附加选项的命令行 运行 它时:ruby code.rb --time 201712121100.
有问题的代码如下:
include Options #here I have some options to choose, like --time
def calculate_p(time, mode)
if mode
calculator = calc1
else
calculator = calc2
end
calculate_t(time, calculator)
end
def calculate_t(time, calculator)
date_ymd = time.strftime("%Y%m%d")
time_hm = time.strftime("%H%M")
calculator
.with(date_ymd, time_hm)
.run do |result|
if result.ok?
result.stdout.pop.split.first
else
msgw("Program returned with errors.", :error)
msgw("stdout: %s; stderr: %s" % [result.stdout, result.stderr], :error)
false
end
end
end
time = Options.get('--time')
.andand do |time_op|
msgw('Taking time from command line arguments') do
time_op.pop.andand
end
end || msgw('Calculating time for now.') do
Time.now.utc
end || abort
calc=calculate_p(time, mode)
msgw
只是定义打印消息。
mode
采用 true
或 false
值。
我收到一个错误:
"
calculate_t
: undefined methodstrftime
for"201712121100":String
(NoMethodError
)"
我做错了什么?为什么使用 Time.now.utc
有效而给出特定时间却无效?
我也从这里查看了解决方案Rails undefined method `strftime' for "2013-03-06":String Date.parse() 给出相同的错误。
问题在这里:
time_op.pop.andand
time_op
从命令行取的是一个字符串,需要一个Time
实例。得到它,使用 DateTime#strptime
:
DateTime.strptime(time_op.pop, "%Y%m%d%H%M").to_time.andand