如何在 Grape 的参数中格式化 DateTime
How to format DateTime in params in Grape
有时我们需要接受来自客户端的DateTime
:
params do
requires :time_to_arrive, type: DateTime, allow_blank: false
end
如果我们在console中写DateTime.now
,默认会给出这样的格式:
Sat, 16 Apr 2016 09:59:26 +0600
是否可以在grape中指定接受DateTime
的格式?
尝试创建自定义类型:
class MyDateTime
attr_reader :value
def initialize(datetime)
@value = datetime
end
def self.parse(value)
my_date_format = '%Y-%m-%dT%H:%M:%S%z'
dt = DateTime.strptime(value, my_date_format)
new(dt)
end
end
requires :time_to_arrive, type: MyDateTime, allow_blank: false
尝试 coerce_with
选项:
params do
requires :time_to_arrive, type: DateTime, coerce_with: DateTime.method(:iso8601), allow_blank: false
end
此外,在调用您的 API 时,您可以使用 your_date_time_var.iso8601
指定 iso8601 格式。
有时我们需要接受来自客户端的DateTime
:
params do
requires :time_to_arrive, type: DateTime, allow_blank: false
end
如果我们在console中写DateTime.now
,默认会给出这样的格式:
Sat, 16 Apr 2016 09:59:26 +0600
是否可以在grape中指定接受DateTime
的格式?
尝试创建自定义类型:
class MyDateTime
attr_reader :value
def initialize(datetime)
@value = datetime
end
def self.parse(value)
my_date_format = '%Y-%m-%dT%H:%M:%S%z'
dt = DateTime.strptime(value, my_date_format)
new(dt)
end
end
requires :time_to_arrive, type: MyDateTime, allow_blank: false
尝试 coerce_with
选项:
params do
requires :time_to_arrive, type: DateTime, coerce_with: DateTime.method(:iso8601), allow_blank: false
end
此外,在调用您的 API 时,您可以使用 your_date_time_var.iso8601
指定 iso8601 格式。