我想将Timex DateTime字段的格式更改为单个文本输入。当我让Phoenix处理格式化时,它看起来像这样:
2017-04-06 23:03:44.513454+10:00 AEST Australia/Hobart
请注意,我正在使用use Timex.Ecto.Timestamps, usec: true
- 因此它包含微秒。
这就是我希望它的样子:
2017-04-06 23:03:44 +10:00
有没有办法通过text_input
格式控制日期格式?还是有另一种方法可以做到这一点吗?
这是我正在使用的架构:
schema "log" do
field :start_date, Timex.Ecto.DateTime
field :end_date, Timex.Ecto.DateTime
field :comment, :string
timestamps
end
我的表单看起来像这样:
<%= form_for @changeset, @action, fn f -> %>
<%= if @changeset.action do %>
<div class="alert alert-danger">
<p>Oops, something went wrong! Please check the errors below.</p>
</div>
<% end %>
<div class="form-group">
<%= label f, :start_date, class: "control-label" %>
<%= text_input f, :start_date, class: "form-control" %>
<%= error_tag f, :start_date %>
</div>
<div class="form-group">
<%= label f, :end_date, class: "control-label" %>
<%= text_input f, :end_date, class: "form-control" %>
<%= error_tag f, :end_date %>
</div>
<div class="form-group">
<%= label f, :comment, class: "control-label" %>
<%= textarea f, :comment, class: "form-control" %>
<%= error_tag f, :comment %>
</div>
<div class="form-group">
<%= submit "Submit", class: "btn btn-primary" %>
</div>
<% end %>
答案 0 :(得分:1)
您可以使用Phoenix.HTML.Form.input_value/2
获取输入值,并可以通过将value: ...
传递给text_input
来指定要向用户显示的值。将此与从值中删除微秒相结合,您将获得相同格式的时间,而不会有任何微秒:
text_input f, :start_date, class: "form-control", value: %{input_value(f, :start_date) | microsecond: {0, 0}}