如何解析和转换日期和时间?
How Can I parse and convert Dates & Times?
不到一个月前,我第一次见到 Odoo,作为一名 90 年代的 DOS 系统分析师,我正在帮助一家小型但发展迅速的本地制造商实施它。在过去的 15 年里,我基本上不在这个行业,我不是专业人士,但学习速度很快 Python、HTML(一些过去的专家)和 Java...
我已经阅读了 Developer Docs,以及开发人员的 Cookbook 和 Essentials,以及各种在线教程(几乎所有 Google 都可以通过几个搜索词组合得出).
我阅读了已关闭的 post 询问这个问题并了解到显然没有实际的 Odoo 参考...
有人可以告诉我在哪里可以找到 'date/time' 解析和转换函数,我可以从使用 'canned' 'hr.employee' 模型的报告中访问这些函数吗?
<?xml version="1.0"?>
<t t-name="hr_attendance.report_attendancelog">
<t t-call="report.html_container">
<t t-call="report.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-6">
<h2><br/>Attendance Log: </h2>
</div>
</div>
<table class="table table-condensed mt32">
<thead>
<th><strong>Date / Time</strong></th>
<th><strong> Operation</strong></th>
</thead>
<tbody>
<t t-foreach="docs" t-as="o">
<t t-set="DspDate" t-value="o.name"/>
<t t-set="DspTime" t-value="o.name"/>
<!-- I want to parse 'o.name', which is 'date time' format (from
Attendance record) to separate 'Date' and 'Time' fields... -->
<!-- t t-set="DspDate" t-value="FUNC?(o.name)"/ -->
<!-- t t-set="DspTime" t-value="FUNC?(o.name)"/ -->
<!-- and do calcs with date & time...) -->
<!-- t t-set="ClcDt1" t-value="FUNC?('PrvDt')"/ -->
<!-- t t-set="ClcDt2" t-value="FUNC?(DspDate)"/ -->
<!-- t t-set="ClcTm1" t-value="FUNC?('PrvTm')"/ -->
<!-- t t-set="ClcTm2" t-value="FUNC?(DspTime)"/ -->
<tr>
<t t-if="ClcDt1 == ClcDt2">
<td><span t-esc="DspDate"/></td>
<td><span t-esc="DspTime"/></td>
<td><span t-esc="o.action"/></td>
</t
</tr>
</t>
<tr class="border-black">
<td colspan="3"><strong>Total period</strong></td>
<td><strong t-esc="o.worked_hours"/></td -->
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
我在 H2 前加了 'br/' 前缀以保持它的正确位置(仅显示在第一页上),但后续页面遮挡了布局 header 后面的列 header。 .. 这可能是显而易见的,我没有注意到,但是我如何将 'H2' 位置调整为低于 'report.external_layout' 设置的 'header'?
在 QWeb 渲染上,您可以使用 python 库时间、日期时间和相对增量。它们包含在所谓的 QWeb 上下文中,该上下文用于报告中代码的评估 (python eval)。您可以在 Odoo 代码 here.
中看到这一点
这意味着你要做这样的事情:
<t t-set="DspDate" t-value="datetime.datetime.strptime(o.name, '%Y-%m-%d %H:%M:%S').strftime('%d/%m/%Y')" />
我更喜欢报表解析器 类 来定义一些常用函数。例如:您可以定义函数 getDate
来进行解析或转换。带有解析器函数的报告代码会更好:
<t t-set="DspDate" t-value="getDate(o.name)" />
不到一个月前,我第一次见到 Odoo,作为一名 90 年代的 DOS 系统分析师,我正在帮助一家小型但发展迅速的本地制造商实施它。在过去的 15 年里,我基本上不在这个行业,我不是专业人士,但学习速度很快 Python、HTML(一些过去的专家)和 Java...
我已经阅读了 Developer Docs,以及开发人员的 Cookbook 和 Essentials,以及各种在线教程(几乎所有 Google 都可以通过几个搜索词组合得出).
我阅读了已关闭的 post 询问这个问题并了解到显然没有实际的 Odoo 参考...
有人可以告诉我在哪里可以找到 'date/time' 解析和转换函数,我可以从使用 'canned' 'hr.employee' 模型的报告中访问这些函数吗?
<?xml version="1.0"?>
<t t-name="hr_attendance.report_attendancelog">
<t t-call="report.html_container">
<t t-call="report.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-6">
<h2><br/>Attendance Log: </h2>
</div>
</div>
<table class="table table-condensed mt32">
<thead>
<th><strong>Date / Time</strong></th>
<th><strong> Operation</strong></th>
</thead>
<tbody>
<t t-foreach="docs" t-as="o">
<t t-set="DspDate" t-value="o.name"/>
<t t-set="DspTime" t-value="o.name"/>
<!-- I want to parse 'o.name', which is 'date time' format (from
Attendance record) to separate 'Date' and 'Time' fields... -->
<!-- t t-set="DspDate" t-value="FUNC?(o.name)"/ -->
<!-- t t-set="DspTime" t-value="FUNC?(o.name)"/ -->
<!-- and do calcs with date & time...) -->
<!-- t t-set="ClcDt1" t-value="FUNC?('PrvDt')"/ -->
<!-- t t-set="ClcDt2" t-value="FUNC?(DspDate)"/ -->
<!-- t t-set="ClcTm1" t-value="FUNC?('PrvTm')"/ -->
<!-- t t-set="ClcTm2" t-value="FUNC?(DspTime)"/ -->
<tr>
<t t-if="ClcDt1 == ClcDt2">
<td><span t-esc="DspDate"/></td>
<td><span t-esc="DspTime"/></td>
<td><span t-esc="o.action"/></td>
</t
</tr>
</t>
<tr class="border-black">
<td colspan="3"><strong>Total period</strong></td>
<td><strong t-esc="o.worked_hours"/></td -->
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
我在 H2 前加了 'br/' 前缀以保持它的正确位置(仅显示在第一页上),但后续页面遮挡了布局 header 后面的列 header。 .. 这可能是显而易见的,我没有注意到,但是我如何将 'H2' 位置调整为低于 'report.external_layout' 设置的 'header'?
在 QWeb 渲染上,您可以使用 python 库时间、日期时间和相对增量。它们包含在所谓的 QWeb 上下文中,该上下文用于报告中代码的评估 (python eval)。您可以在 Odoo 代码 here.
中看到这一点这意味着你要做这样的事情:
<t t-set="DspDate" t-value="datetime.datetime.strptime(o.name, '%Y-%m-%d %H:%M:%S').strftime('%d/%m/%Y')" />
我更喜欢报表解析器 类 来定义一些常用函数。例如:您可以定义函数 getDate
来进行解析或转换。带有解析器函数的报告代码会更好:
<t t-set="DspDate" t-value="getDate(o.name)" />