Ruby strftime(“%Q”)坏了吗?

strftime文档声称%Q有效:

 %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC. 

但它为我返回“%Q”。

 2.1.1 :054 > date = Time.now => 2014-06-10 12:28:57 -0700 2.1.1 :055 > date.strftime("%Q") => "%Q" 

我正在使用RVM和Ruby 2.1.1。

我做错了什么,或者这是一个Ruby bug?

您正在声明Time对象,而不是DateDateTime对象。 Time的行为与DateDateTime完全不同。

试试这个:

 require 'date' Date.today.strftime("%Q") 

希望有所帮助。

'%Q'由Date和DateTime对象使用,而不是Time对象。 你可以试试这个:

 require 'date' DateTime.now.strftime("%Q") 

要么

 require 'date' Date.today.strftime("%Q") 

其他答案提到如何使用DateTime,但如果你更喜欢使用Time对象(例如因为Rubocop的默认设置抱怨使用DateTime.now ),那么这是等效的:

Time.now.strftime("%s%L")

%s是自纪元以来的秒数, %L是当前秒的毫秒数。

有一点,没有答案提到,为什么你回到"%Q" 。 您也可能会收到错误 ,但不支持指令,但您正试图通过。

Time#strftime明确提到了这个 –

指令以百分号(%)开头。 任何未列为指令的文本都将传递给输出字符串。