Ruby strftime("%Q")坏了吗?

时间:2014-06-10 19:34:04

标签: ruby

strftime docs声称%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?

5 个答案:

答案 0 :(得分:6)

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

请改为尝试:

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

希望有所帮助。

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

其他答案提到了如何使用DateTime进行操作,但如果您更喜欢使用Time对象(例如,因为Rubocop's default settings complain about using DateTime.now),则等效:

apply

def f(x): if x >= 7: SID = 3 elif x >= 6 and x<7: SID = 2 else: SID = 1 return SID df['SID']=df['order_total'].apply(f) 是距纪元的秒数​​,而Time.now.strftime("%s%L")是当前秒数的毫秒数。

答案 3 :(得分:1)

由于%Q仅由Date或DateTime使用,因此您可以将时间对象转换为DateTime

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

答案 4 :(得分:0)

有一件事,没有提到答案,为什么你回来"%Q"。你也可以得到错误,虽然不支持指令,但你试图通过。

Time#strftime明确提到了这一点 -

  

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