Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby strftime(“Q”)坏了吗?_Ruby - Fatal编程技术网

Ruby strftime(“Q”)坏了吗?

Ruby strftime(“Q”)坏了吗?,ruby,Ruby,%Q有效的说法: %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC. 但它为我返回“%Q” 我正在使用RVM和Ruby 2.1.1 我是做错了什么,还是这是一个Ruby bug?您正在声明一个Time对象,而不是Date或DateTime对象Time的行为与Date或DateTime完全不同 请尝试以下方法: require 'date' Date.today.strftime("%Q") 希望有帮助。'%Q'由日期和日期时间

%Q
有效的说法:

%Q - Number of milliseconds since 1970-01-01 00:00:00 UTC.
但它为我返回“%Q”

我正在使用RVM和Ruby 2.1.1


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

您正在声明一个
Time
对象,而不是
Date
DateTime
对象
Time
的行为与
Date
DateTime
完全不同

请尝试以下方法:

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

希望有帮助。

'%Q'
由日期和日期时间对象使用,而不是时间对象。您可以尝试以下方法:

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


有一件事,没有提到答案,那就是为什么你回来了
“%Q”
。当指令不受支持,但您正在尝试传递时,也可能会出现错误

明确提到了这一点-

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


其他答案提到了如何使用DateTime,但如果您更喜欢使用时间对象(例如,因为),则这是等效的:

Time.now.strftime(“%s%L”)


%s
是从纪元开始的秒,
%L
是当前秒的毫秒。

您可以将时间对象转换为日期时间,因为
%Q
仅由日期或日期时间使用

Time.now.to_datetime.strftime('%Q')

%Q
不是为
时间
对象列出的,而是为
日期
列出的。Arup是正确的。您可以使用
to_date
方法简单地将
Time
实例转换为\u date实例,然后使用%Q格式标志。正如一条建议:在认为您已经在核心库中发现了错误之前,最好先深入研究文档,询问一些本应有效的东西为什么不起作用,如果文档和您的代码似乎正确,然后可能会认为这是一个错误。不过,在经过高度测试的库中发现bug的可能性很小。相反,这些bug大部分时间都会出现在代码中。但是,别担心,我们都至少做过一次。这就是我所需要的。我来这里也是因为Rubocop不喜欢
到_datetime
。如果这么简单,为什么这不是时间的一部分?
require 'date'
Date.today.strftime("%Q")
Time.now.to_datetime.strftime('%Q')