液体解析日期不正确

Liquid parsing date incorrectly

我有一个包含以下代码的文件 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 会发布这个看似随机的日期?这可以从其他地方播种吗?

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 方法之前进行解析,然后将其转换为您的日期格式。