【问题标题】:Display time stamp in django templates? [duplicate]在 Django 模板中显示时间戳? [复制]
【发布时间】:2017-06-01 07:41:31
【问题描述】:

我在我的 Django 模板中使用编辑配置文件案例,我不确定如何将时间戳转换为正确的时间?

我从 API 得到的值是 "dob": 730166400000,.

现在我在模板中使用它:

<div class="form-group">
    <label class="col-sm-4 control-label text_left">Dob/label>
    <div class="col-sm-8">
        <input type="text" class="form-control" 
               placeholder="Graduation Year"
               value="{{ result_data_for_editing.dob |date:"U" }}" 
               name="graduationYear" id="graduationYear">
    </div>
</div>

但它显示无效过滤器标记错误。有什么方法可以只在 Django 模板中转换时间戳吗?我知道在视图中是可能的,但我想在 Django 模板中转换它。

【问题讨论】:

  • 请定义“适当的时间”。 “适当时间”的格式是什么?您还可以扩展您的代码示例吗?它是HTML标签的value属性吗?哪一个?
  • 适当的时间意味着 dd-mm-yyyy 并且是扩展代码

标签: python django


【解决方案1】:

您可以使用自定义模板过滤器

{{ datevalue| print_timestamp | date:"d-m-Y" }}

from django import template
import datetime
register = template.Library()

def print_timestamp(timestamp):
    try:
        ts = float(timestamp)
    except ValueError:
        return None
    return datetime.datetime.fromtimestamp(ts)

register.filter(print_timestamp)

【讨论】:

    【解决方案2】:

    好吧,我误解了,你应该制作模板标签来完成这项工作,用模板标签(或任何你想要的名字)创建一个文件夹并创建名为 tags.py 的文件(替换为你的名字,不要忘记创建 init.py)

    from django import template    
    register = template.Library()    
    
    @register.filter('timestamp_to_time')
    def timestamp_to_time(timestamp):
        import datetime
        return datetime.date.fromtimestamp(int(timestamp))
    

    然后,将其包含在您的模板中

    {%  load tags %}
    

    然后

    {{ result_data_for_editing.dob|timestamp_to_time|date:"d-m-Y" }}
    

    【讨论】:

    • 恐怕这行不通。 datevalue 应该是一个 datetime 对象,但 OP 自 UNIX 纪元以来以毫秒为单位有一个 timestamp
    • @cezar 感谢您的更正,我编辑了我的答案
    猜你喜欢
    • 2012-05-29
    • 2019-10-03
    • 2018-12-28
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多