液体解析日期不正确
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&customer_name=John%20Doe&gender__male=true&birth_date_DAY=8&birth_date_MONTH=8&birth_date_YEAR=1988&address=675%20Hermione%20Street&city=Lawrencetown&state_id=MA&postal=01823&ctn=4136743582&business_phone=4156328553&business_extension=93&drivers_license=TWACI2345&email=me@me.com&email_okay=true&employer_name=Southwest%20Electric&employer_phone=4032453564&emergency_contact=Gerald&emergency_phone=4564244543&referred_by=Steve%20Murphy&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&birth_date_MONTH=8&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
方法之前进行解析,然后将其转换为您的日期格式。
我有一个包含以下代码的文件 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&customer_name=John%20Doe&gender__male=true&birth_date_DAY=8&birth_date_MONTH=8&birth_date_YEAR=1988&address=675%20Hermione%20Street&city=Lawrencetown&state_id=MA&postal=01823&ctn=4136743582&business_phone=4156328553&business_extension=93&drivers_license=TWACI2345&email=me@me.com&email_okay=true&employer_name=Southwest%20Electric&employer_phone=4032453564&emergency_contact=Gerald&emergency_phone=4564244543&referred_by=Steve%20Murphy&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&birth_date_MONTH=8&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
方法之前进行解析,然后将其转换为您的日期格式。