将 MomentJS 格式化为 Rails DateTime
Format MomentJS to Rails DateTime
如何将 moment()
格式化为 Rails 日期时间?
我使用 react-datepicker 和 Rails 5 作为后端。
反应:
let newDate = this.state.startDate.format('YYYY-MM-DD HH:mm')
console.log(newDate); #=> 2016-10-11 08:46
查看 momentjs formats,我看不到任何接近 rails 日期时间格式的内容,即:Mon, 10 Oct 2016 15:16:29 UTC +00:00
目的是将 newDate
作为 params
传递给 rails 控制器:params[:new_date]
更新:
cema-sp 的回答是我回答的最后一部分,但我遇到了错误。要解决这个问题:
# JS:
let newDate = this.state.startDate.format(); # no format type
# Controller:
DateTime.strptime(params[:new_date], '%Y-%m-%dT%H:%M:%S%z')
moment.js object newDate
可以格式化成任何你喜欢的字符串(例如问题 YYYY-MM-DD HH:mm
或默认格式)并发送到服务器:
const newDate = this.state.startDate.format()
...
fetch(apiEndpointUrl, {
method: 'POST',
body: JSON.stringify({
new_date: newDate,
})
}).then(...)
...
唯一的问题是你必须在 Rails 后端解析 params[:new_date]
。
使用简单的 DateTime class parse
方法或更高效的 strptime
(提供选择的格式)。
如果你想更新模型你可以使用setter方法:
def new_date=(value)
parsed = if value.is_a? String
DateTime.parse(value)
# Or more performant
# DateTime.strptime(value, '%Y-%m-%dT%H:%M:%S%z')
else
value
end
write_attribute(:new_date, parsed)
end
如果您需要在控制器中使用日期,只需使用 DateTime 方法之一解析它:
new_date = DateTime.parse(params[:new_date])
# Or
new_date = DateTime.strptime(params[:new_date], '%Y-%m-%dT%H:%M:%S%z')
如何将 moment()
格式化为 Rails 日期时间?
我使用 react-datepicker 和 Rails 5 作为后端。
反应:
let newDate = this.state.startDate.format('YYYY-MM-DD HH:mm')
console.log(newDate); #=> 2016-10-11 08:46
查看 momentjs formats,我看不到任何接近 rails 日期时间格式的内容,即:Mon, 10 Oct 2016 15:16:29 UTC +00:00
目的是将 newDate
作为 params
传递给 rails 控制器:params[:new_date]
更新:
cema-sp 的回答是我回答的最后一部分,但我遇到了错误。要解决这个问题:
# JS:
let newDate = this.state.startDate.format(); # no format type
# Controller:
DateTime.strptime(params[:new_date], '%Y-%m-%dT%H:%M:%S%z')
moment.js object newDate
可以格式化成任何你喜欢的字符串(例如问题 YYYY-MM-DD HH:mm
或默认格式)并发送到服务器:
const newDate = this.state.startDate.format()
...
fetch(apiEndpointUrl, {
method: 'POST',
body: JSON.stringify({
new_date: newDate,
})
}).then(...)
...
唯一的问题是你必须在 Rails 后端解析 params[:new_date]
。
使用简单的 DateTime class parse
方法或更高效的 strptime
(提供选择的格式)。
如果你想更新模型你可以使用setter方法:
def new_date=(value)
parsed = if value.is_a? String
DateTime.parse(value)
# Or more performant
# DateTime.strptime(value, '%Y-%m-%dT%H:%M:%S%z')
else
value
end
write_attribute(:new_date, parsed)
end
如果您需要在控制器中使用日期,只需使用 DateTime 方法之一解析它:
new_date = DateTime.parse(params[:new_date])
# Or
new_date = DateTime.strptime(params[:new_date], '%Y-%m-%dT%H:%M:%S%z')