液体解析日期不正确

时间:2015-02-28 13:28:29

标签: ruby-on-rails parsing date liquid

我有一个文件standard_en.html,其中包含以下代码:

    <td class="title">Date of Birth</td>
    <td colspan="2">
      {{ meta/birth_date | date: "%m/%d/%Y" }}
    </td>

这是输出08/18/1970,这是错误的日期。

如果我用{{ meta }}替换液体线,则输出:

{"source_url"=>"http://vdocs-jg/forms/goodlife/standard.html?__launch_signing__=true&amp;customer_name=John%20Doe&amp;gender__male=true&amp;birth_date_DAY=8&amp;birth_date_MONTH=8&amp;birth_date_YEAR=1988&amp;address=675%20Hermione%20Street&amp;city=Lawrencetown&amp;state_id=MA&amp;postal=01823&amp;ctn=4136743582&amp;business_phone=4156328553&amp;business_extension=93&amp;drivers_license=TWACI2345&amp;email=me@me.com&amp;email_okay=true&amp;employer_name=Southwest%20Electric&amp;employer_phone=4032453564&amp;emergency_contact=Gerald&amp;emergency_phone=4564244543&amp;referred_by=Steve%20Murphy&amp;referred_number=546642",
"source_type"=>"html",
"terminal_lang"=>"en",
"dba"=>"wirelesswave",
"country"=>"CA",
"terminal_id"=>2,
"contract_lang"=>"en",
"contract_parser"=>"web_form",
"contract_with"=>"carrier",
"carrier"=>"goodlife",
"customer_name"=>"John Doe",
"gender"=>"male",
"birth_date"=>"19880808",
"contract_template"=>"goodlife_standard_1",
"industry_type"=>"cellular",
"pos_status"=>"unknown",
"tran_id"=>"20110816161001_4136743582"}

(为便于阅读而格式化,删除了一些信息)

如您所见,birth_date是“19880808”,这是我的测试所期望的值。甚至在source_url中我们正在从中导出该日期正确设置(birth_date_DAY=8&amp;birth_date_MONTH=8&amp;birth_date_YEAR=1988

此外还有一些附近的行

    <td class="title">Address</td>
    <td>{{ meta/address }}</td>
    <td class="title">City</td>
    <td>{{ meta/city }}</td>

行为正确。

为什么Liquid推出这个看似随意的日期?这可以从其他地方播种吗?

1 个答案:

答案 0 :(得分:1)

19880808是Unix格式的日期。即这不是1988-08-08,这是1970-08-18(或+3时区中的19)。

$  ~  irb
2.1.0 :001 > Time.at(19880808)
 => 1970-08-19 05:26:48 +0300

如果您希望将19880808显示为1988-08-08,则应在使用Date#strptime方法之前进行解析,之后将其转换为日期格式。